Lompat ke konten utama
←

Mengolah Citra dengan Python

Pelajaran 5 dari 16

Ukuran dan intensitas

Mengubah ukuran dan interpolasi

Setelah pelajaran ini kamu bisa mengubah ukuran citra dengan Pillow dan numpy serta memilih filter nearest atau bilinear sesuai kebutuhan.

±13 menitDiperiksa 28 Sep 2026

Materi

Mengubah ukuran (resize) berarti menghitung nilai piksel di kisi baru yang tidak sama dengan kisi lama. Cara menghitungnya disebut interpolasi, dan Pillow menyebutnya filter resampling. Image.resize(size, resample) menerima size berurutan (lebar, tinggi) dan, menurut dokumentasinya, memakai BICUBIC bila resample tidak ditulis, kecuali pada mode "1" dan "P" yang selalu NEAREST.

Handbook Pillow mendefinisikan NEAREST sebagai memilih satu piksel masukan terdekat dan mengabaikan yang lain, sehingga tidak ada nilai baru yang muncul: tepi tetap tajam dan bertangga. BILINEAR menghitung keluaran dengan interpolasi linear dari piksel-piksel di sekitarnya, sehingga muncul nilai antara dan tepi menjadi halus. NEAREST cocok untuk citra yang nilainya berupa kode — piksel-art, topeng biner, peta label — karena nilai antara di situ tidak bermakna; BILINEAR dan BICUBIC cocok untuk foto.

Memperbesar dengan faktor bulat memakai nearest bisa dikerjakan numpy sendiri: np.repeat mengulang setiap elemen sepanjang satu sumbu, jadi mengulang di sumbu baris lalu di sumbu kolom memperbesar citra tanpa Pillow. Mengecilkan dua kali secara kasar cukup dengan citra[::2, ::2].

import numpy as np
from PIL import Image

papan = np.array([[0, 255], [255, 0]], dtype=np.uint8)   # papan catur 2 x 2
tajam = Image.fromarray(papan).resize((4, 4), Image.NEAREST)
halus = Image.fromarray(papan).resize((4, 4), Image.BILINEAR)
print(np.unique(np.array(tajam)))   # hanya 0 dan 255
print(len(np.unique(np.array(halus))) > 2)   # True: ada nilai antara

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 2 dari 3

Citra Pillow dengan size (640, 480) diubah dengan im.resize((320, 200)). Berapa banyak baris (dimensi pertama shape) larik numpy hasilnya?

Latihan 3 dari 3

Kamu memperbesar ikon piksel-art 16 × 16 menjadi 64 × 64 dan ingin setiap kotak tetap tajam tanpa warna campuran baru. Filter mana yang sesuai dokumentasi Pillow?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke