You are on page 1of 13

Pendahuluan untuk memproses gambar

di Matlab 1
& KRISTEN oleh Sandberg, Departemen Matematika, University of Colorado di
Boulder

Pendahuluan
Worksheet ini adalah pengenalan tentang bagaimana menangani gambar di Matlab.
Ketika bekerja dengan gambar di Matlab, ada banyak hal yang perlu diingat seperti
memuat gambar, menggunakan format yang tepat, menyimpan data sebagai jenis data
yang berbeda, bagaimana untuk menampilkan gambar, konversi antara berbagai format
gambar, dll ini worksheet menyajikan beberapa perintah ini dirancang untuk operasi.
Kebanyakan dari perintah ini membutuhkan Anda untuk memiliki alat pengolahan
Gambar kotak diinstal dengan Matlab. Untuk mengetahui apakah ia terinstal, ketik ver
di Matlab prompt. Ini memberi anda daftar apa yang alat kotak yang terpasang pada
sistem anda.
Untuk referensi lebih lanjut tentang penanganan gambar di Matlab Anda dianjurkan
untuk menggunakan Matlab bantuan browser. Ada yang luas (dan cukup baik) on-line
manual untuk memproses gambar kotak alat yang dapat diakses melalui browser Matlab
bantuan.
Bagian pertama ini worksheet yang cukup berat. Satu-satunya cara untuk memahami
bagaimana disajikan perintah kerja, adalah untuk berhati-hati bekerja melalui contoh
yang diberikan pada akhir worksheet. Setelah anda dapat mendapatkan contoh ini untuk
bekerja, percobaan sendiri menggunakan gambar favorit Anda!

Fundamental
Sebuah gambar digital terdiri dari pixel yang dapat dianggap sebagai titik kecil pada
layar. Sebuah gambar digital adalah instruksi bagaimana untuk warna setiap piksel.
Kami akan melihat secara rinci nanti bagaimana ini dilakukan dalam praktek. Sebuah
khas ukuran gambar adalah 512-oleh-512 piksel. Nanti dalam kursus Anda akan melihat
bahwa nyaman untuk memberi dimensi gambar menjadi kuasa 2. Misalnya,
2
9 = 512.
Dalam kasus umum kita katakan bahwa gambar adalah ukuran m-n-oleh jika terdiri dari
m piksel dalam arah vertikal dan n piksel dalam arah horisontal.
Marilah kita berkata, bahwa kita gambar pada format 512-oleh-1024 piksel. Ini berarti
bahwa data untuk gambar harus berisi informasi tentang 524.288 piksel, yang
memerlukan banyak memori! Oleh karena itu, mengompresi foto adalah penting untuk
memproses gambar efisien. Anda akan lihat nanti bagaimana analisis Fourier dan
analisis Wavelet dapat membantu kami untuk kompres gambar secara signifikan. Ada
juga beberapa "ilmiah komputer" trik (misalnya entropy coding) untuk mengurangi
jumlah data yang diperlukan untuk menyimpan gambar.

Format gambar yang didukung oleh Matlab
Berikut adalah format gambar yang didukung oleh Matlab:
BMP
HDF
JPEG
PCX
TIFF
XWB
Sebagian besar gambar yang Anda temukan di Internet adalah JPEG-gambar yang
merupakan untuk satu nama yang paling banyak digunakan untuk kompresi gambar
standar. Jika Anda menyimpan gambar Anda dapat melihat dari biasanya sufiks apa yang
akan disimpan format in Misalnya, gambar bernama myimage.jpg akan disimpan dalam
format JPEG dan kami akan lihat nanti bahwa kami dapat memuat gambar format ini ke
Matlab.

Bekerja dalam format Matlab
Jika suatu gambar akan disimpan sebagai gambar JPEG-disc pada Anda pertama-tama
kita membaca ke Matlab. Namun, untuk mulai bekerja dengan gambar, misalnya
melakukan ombak mentransformasi pada gambar, kita harus dikonversi ke format yang
berbeda. Bagian ini menjelaskan empat format umum.

Intensitas gambar (skala gambar abu-abu)
Ini adalah setara dengan sebuah "abu-abu skala gambar" dan ini adalah gambar kami
akan dengan kebanyakan bekerja di program ini. Ini merupakan sebuah gambar sebagai
sebuah matriks dimana setiap elemen memiliki nilai sama dengan cara terang / gelap
yang piksel pada posisi harus berwarna. Ada dua cara untuk mewakili nomor yang
mewakili kecerahan dari piksel: Double kelas (atau tipe data). Hal ini memberikan
sebuah nomor apung ( "dengan angka desimal") antara 0 dan 1 untuk setiap piksel. Nilai
0 berkaitan dengan hitam dan nilai 1 berkaitan dengan putih. Lain kelas yang disebut
uint8 memberikan sebuah integer antara 0 dan 255 untuk mewakili kecerahan dari
piksel. Nilai 0 berkaitan dengan hitam dan putih ke 255. Kelas uint8 hanya
membutuhkan sekitar 1 / 8 dari penyimpanan dibandingkan dengan kelas dua kali. Di
sisi lain, banyak fungsi matematika hanya dapat diterapkan kepada dua kelas. Kami akan
melihat bagaimana nanti dikonversi antara dua dan uint8.

Binari gambar
Format gambar ini juga menyimpan gambar sebagai matriks tetapi hanya dapat satu
piksel warna atau hitam putih (dan tidak ada di antara). Ini memberikan sebuah 0 untuk
hitam dan putih untuk 1.

Diindeks gambar
Ini adalah cara yang praktis untuk melakukan mewakili warna gambar. (Dalam program
ini kami akan kebanyakan bekerja dengan gambar tapi Skala abu-abu sekali Anda telah
belajar bagaimana untuk bekerja dengan skala abu-abu gambar Anda juga akan
mengetahui bagaimana prinsip bekerja dengan warna gambar.) Sebuah toko diindeks
gambar foto sebagai dua matrik. Pertama matriks telah dengan ukuran yang sama dengan
gambar dan nomor satu untuk setiap piksel. Kedua disebut matriks peta warna dan
ukuran mungkin berbeda dari gambar. Angka-angka dalam matriks pertama adalah
instruksi yang menggunakan nomor ke dalam peta warna matriks.

RGB gambar
Ini adalah format lain untuk gambar warna. Ini merupakan sebuah gambar dengan tiga
matrik ukuran gambar yang cocok dengan format. Setiap matriks berkaitan dengan salah
satu warna merah, hijau dan biru atau memberi instruksi dari jumlah tersebut masing-
masing warna tertentu harus menggunakan piksel.

Multiframe gambar
Pada beberapa aplikasi kami ingin belajar dari gambar berurutan. Hal ini sangat umum
di biologi dan medis di mana Anda dapat belajar berurutan dari iris sel. Untuk kasus ini,
multiframe format dengan mudah bekerja dengan urutan gambar. Jika Anda memilih
untuk bekerja dengan biologi imaging nanti dalam program ini, Anda dapat
menggunakan format ini.

Bagaimana untuk mengkonversi antara berbagai format
Tabel berikut ini menunjukkan bagaimana mengkonversi antara berbagai format yang
diberikan di atas. Semua perintah ini memerlukan alat pengolahan Gambar kotak!
Format gambar konversi
(Dalam kurung Anda ketik nama gambar yang akan dikonversi.)
Operasi:
Matlab
perintah:
Mengkonversi antara intensitas / diindeks / RGB format untuk format
binari.
gigil ()
Dikonversi ke format intensitas antara format indeks.
gray2ind ()
Dikonversi ke format antara indeks intensitas format.
ind2gray ()
Dikonversi ke format indeks antara RGB format.
ind2rgb ()
Merubah matriks untuk reguler dengan skala intensitas format.
mat2gray ()
Dikonversi ke format RGB antara intensitas format.
rgb2gray ()
Mengkonversi antara RGB format untuk diindeks format.
rgb2ind ()
Perintah mat2gray adalah berguna jika anda memiliki matriks mewakili gambar tetapi
nilai-nilai yang mewakili skala berkisar antara abu-abu, mari kita berkata, 0 dan 1000.
Perintah mat2gray secara otomatis kembali skala semua masukan sehingga mereka jatuh
dalam 0 dan 255 (bila Anda menggunakan uint8 kelas) atau 0 dan 1 (jika Anda
menggunakan dua kelas).

Bagaimana untuk mengkonversi antara dua dan uint8
Bila Anda menyimpan gambar, Anda harus menyimpannya sebagai uint8 sejak gambar
ini membutuhkan jauh lebih sedikit dibandingkan memori dua kali. Bila Anda
memproses gambar (yang melakukan operasi matematika pada gambar) Anda harus
dikonversi menjadi dua kali. Mengkonversi bolak-balik antara kelas ini sangat mudah.
Saya = im2double (I);
mengkonversi gambar saya bernama uint8 dari dua kali lipat.
Saya = im2uint8 (I);
mengkonversi gambar nama saya dari dua kali untuk uint8.

Bagaimana membaca file
Bila Anda menemukan foto Anda ingin bekerja dengan, biasanya dalam bentuk file
(misalnya, jika Anda bawah memuat gambar dari web, biasanya disimpan sebagai file-
JPEG). Setelah kami selesai memproses gambar, kita mungkin ingin menulis kembali
ke-file JPEG sehingga kami dapat, misalnya, posting gambar yang diproses di web. Hal
ini dilakukan dengan menggunakan perintah imread dan imwrite. Perintah ini
memerlukan alat pengolahan Gambar kotak!
Membaca dan menulis file gambar
Operasi:
Matlab
perintah:
Baca gambar.
(Dalam kurung anda ketik nama file gambar Anda ingin membaca.
Letakkan nama file dalam tanda petik tunggal ''.)
imread ()
Tulis ke file gambar.
(Seperti yang pertama argumen dalam kurung anda ketik nama gambar
yang telah bekerja dengan.
Sebagai argumen kedua dalam kurung anda ketik nama file dan format
yang Anda ingin tulis untuk gambar.
Letakkan nama file dalam tanda petik tunggal ''.)
imwrite (,)
Pastikan untuk menggunakan semi-usus; setelah perintah ini, anda akan mendapatkan
nomor Kesan sebelum bergulir di layar Anda ... Perintah imread dan imwrite
mendukung format yang diberikan dalam bagian "Image format didukung oleh Matlab"
diatas.

Memuat dan menyimpan variabel di Matlab
Bagian ini menjelaskan cara memuat dan menyimpan variabel di Matlab. Setelah Anda
telah membaca file, Anda mungkin dikonversi ke sebuah intensitas gambar (sebuah
matriks) dan bekerja dengan matriks ini. Setelah Anda selesai Anda mungkin ingin
menyimpan gambar matriks mewakili untuk terus bekerja dengan matriks ini di lain
waktu. Hal ini dilakukan dengan mudah menggunakan perintah dan menyimpan beban.
Catatan menyimpan dan beban yang sering digunakan Matlab perintah, dan bekerja
secara mandiri dari apa yang alat kotak yang terpasang.
Memuat dan menyimpan
variabel
Operasi: Matlab perintah:
Simpan variabel X.
menyimpan X
Memuat variabel X.
beban X

Contoh
Dalam contoh pertama kami akan bawah memuat gambar dari web, membaca ke Matlab,
menyelidiki dan format dan menyimpan matriks mewakili gambar.

Contoh 1.
Bawah memuat gambar berikut (dengan mengklik pada gambar dengan menggunakan
tombol mouse sebelah kanan) dan menyimpan file sebagai cell1.jpg.
Ini adalah
gambar yang
diambil oleh
sel mikroskop
elektron di
Departemen
molekul, dan
perkembangan
seluler di
Biologi CU.

Sekarang buka Matla dan pastikan Anda berada di direktori yang sama disimpan sebagai
file. (Anda dapat memeriksa file yang Anda berisi direktori dengan mengetikkan ls di
Matlab prompt. Anda mengubah direktori menggunakan perintah cd.) Sekarang ketik
perintah berikut ini dan melihat apa yang tidak setiap perintah. (Tentu saja, Anda tidak
perlu ketik komentar yang diberikan dalam kode setelah tanda%.)

Saya = imread ( 'cell1.jpg');% Load file gambar dan menyimpannya
sebagai variabel I.

esok% Jenis "esok" untuk mengetahui ukuran dan kelas disimpan semua
variabel.

Saya menyimpan% Simpan variabel I.

ls% Daftar file di direktori Anda.

% Ada sekarang harus jadi sebuah file bernama "I.mat" Anda di direktori
% Berisi variabel I.
Perlu diketahui bahwa semua variabel yang Anda simpan dalam Matlab biasanya
mendapatkan akhiran. Tikar.
Kemudian, kita akan melihat bahwa kami dapat menampilkan gambar dengan
menggunakan perintah imshow. Perintah ini memerlukan alat pengolahan gambar kotak.
Perintah untuk menampilkan gambar akan dijelaskan secara rinci di bagian "Bagaimana
menampilkan gambar di Matlab" dibawah.

% jelas Hapus Matlab memori.

Load% saya memuat variabel saya yang disimpan di atas kami.

esok% Periksa bahwa ia memang dimuat.

imshow (saya)% Tampilkan gambar

Saya = im2double (I);% Mengkonversi variabel menjadi dua kali.

esok% Pastikan variabel memang telah dikonversi menjadi dua kali lipat

% Berikutnya prosedur yang terpotong-potong sudut kiri atas gambar
% Dan menyimpan gambar sebagai Ired dikurangi.

untuk i = 1:256
untuk j = 1:256
Ired (i, j) = I (i, j);
akhir
akhir

esok% Periksa variabel yang sudah disimpan.

imshow (Ired)% Tampilan potongan gambar.

Contoh 2
Pergi ke halaman rumah CU dan bawah memuat gambar dari kampus dengan Rockies di
latar belakang. Menyimpan gambar sebagai pic-home.jpg
Selanjutnya, lakukan berikut ini di Matlab. (Pastikan Anda dalam direktori yang sama
seperti file gambar Anda).

bersih

A = imread ( 'pic-home.jpg');

esok

imshow (A)
Ingat, ketika anda mengetik esok mungkin ia mengatakan bahwa ukuran 300x504x3 ini.
Ini berarti bahwa gambar yang telah dimuat sebagai RGB gambar (lihat bagian "RGB
gambar di atas"). Namun, dalam mata kuliah ini kita akan kebanyakan bekerja dengan
skala gambar abu-abu, biarlah kami dikonversi menjadi skala abu-abu (atau "intensitas")
gambar.


A = rgb2gray (A);% Mengkonversi untuk skala abu-abu

esok

imshow (A)
Sekarang ukuran gambar menunjukkan bahwa kami adalah tak lain daripada yang biasa
matriks.
Catatan: Dalam kasus lain bila Anda bawah memuat gambar warna dan jenis esok Anda
dapat melihat bahwa ada satu matriks yang sesuai dengan ukuran gambar dan satu
matriks disebut peta disimpan dalam Matlab. Dalam kasus ini, Anda telah diindeks
dimuat sebuah gambar (lihat bagian di atas). Dalam rangka untuk menukarkan diindeks
gambar ke dalam intensitas (skala abu-abu) gambar, yang menggunakan ind2gray
perintah yang dijelaskan di bagian "Bagaimana untuk mengubah format yang berbeda
antara" di atas.

Bagaimana untuk menampilkan gambar dalam Matlab
Berikut ini adalah beberapa perintah dasar Matlab (tidak memerlukan alat apapun kotak)
untuk menampilkan gambar.
Menampilkan gambar yang diberikan dalam bentuk matriks
Operasi:
Matlab
perintah:
Menampilkan gambar mewakili sebagai matriks X.
imagesc (X)
Menyesuaikan kecerahan. s merupakan parameter seperti yang
-1 <S <0 memberikan sebuah gambar gelap, 0 <s <1 memberikan
sebuah gambar yang lebih cerah.
terang (s)
Untuk mengubah warna abu-abu.
colormap (abu-
abu)
Kadang-kadang Anda gambar mungkin tidak ditampilkan dalam skala abu-abu walaupun
Anda mungkin telah diubah menjadi abu-abu skala gambar. Anda dapat menggunakan
perintah colormap (abu-abu) untuk "memaksa" Matlab menggunakan skala abu-abu
ketika menampilkan gambar.
Jika Anda menggunakan Matlab dengan Image memproses alat kotak diinstal, saya
sarankan Anda untuk menggunakan perintah imshow untuk menampilkan gambar.
Menampilkan gambar yang diberikan dalam bentuk matriks
(dengan alat pengolahan gambar kotak)
Operasi:
Matlab
perintah:
Menampilkan gambar mewakili sebagai matriks X.
imshow (X)
Perbesar (menggunakan kiri dan kanan tombol mouse).
zoom pada
Menonaktifkan fungsi zoom.
memperbesar
off

Latihan
Memuat gambar favorit Anda ke Matlab (jika ini adalah salah satu format yang
dijelaskan di bagian "Image format didukung oleh Matlab" diatas). Sekarang percobaan
dengan gambar ini, menggunakan perintah ini diberikan dalam worksheet.


http://amath.colorado.edu/courses/4720/2000Spr/Labs/Worksheets/Matlab_tutorial/matla
bimpr.html









http://www.eng.auburn.edu/~sjreeves/Classes/IP/IP.htm
l
MATLAB untuk pengolahan gambar digital
Berikut beberapa tips yang akan membantu Anda memulai menggunakan MATLAB
program untuk memproses gambar. Hal ini tips dari daftar bahwa anda adalah luas
tentang menggunakan Matlab untuk DSP. Jika tidak, klik di sini. Untuk informasi lebih
lanjut tentang dasar Matlab, merujuk ke Matlab Primer.
Gambar pengolahan peralatan
Gambar Pengolahan peralatan yang membentang dari kemampuan dasar Matlab dengan
menyediakan sejumlah khusus I / O, layar, dan fungsi untuk pengolahan gambar dan
pengolahan gambar. Jenis "membantu gambar" di Matlab tanya untuk mendapatkan
daftar fungsi yang tersedia.
IMAGE PENAFASIRAN
Gambar akan disimpan sebagai matriks menggunakan standar Matlab matriks konvensi.
Ada lima dasar jenis gambar Matlab didukung oleh:
1. Diindeks gambar
2. Intensitas gambar
3. Binari gambar
4. RGB gambar
5. 8-bit gambar
Untuk mengetahui seluk-beluk dari masing-masing ini, lihat Gambar Pengolahan
peralatan manual. Gambar jenis ini adalah terutama untuk tujuan layar. Mereka tidak
menghambat nilai-nilai gambar yang dapat diproses menggunakan teknik pemrosesan
gambar umum dalam Matlab. Suatu pengecualian adalah uint8, jenis data untuk 8-bit
gambar. Lihat "membantu uint8" untuk rincian lebih lanjut. Biasanya, gambar
menggunakan koordinat yang sama konvensi sebagai matriks koordinat, dengan argumen
pertama merujuk ke baris # dan yang kedua untuk kolom #. Asal adalah sudut kiri atas
foto. Dalam Matlab, adalah asal (1,1). Ketika Matlab meminta koordinat x dan y, x
dianggap ke kanan dan y dianggap bawah.
Gambar I / O
Pengolahan gambar yang menyediakan fungsi peralatan imread dan imwrite yang akan
membaca dan menulis beberapa jenis gambar standar. Jenis "membantu imread" dan
"membantu imwrite" untuk mendapatkan informasi lebih lanjut.
Tampilan gambar
Untuk menetapkan standar colormap, menggunakan colormap. Biasanya, Anda harus
menggunakan colormap abu-abu (256) untuk 8 bit grayscale gambar. Gunakan imshow
(X) untuk menampilkan gambar setelah menetapkan standar colormap. Lihat untuk
membantu pada imshow lain usages. Untuk memaksa untuk membuat jendela satu layar
ukuran piksel yang sama sebagai satu piksel gambar, gunakan truesize. Anda dapat
menampilkan beberapa foto dengan baik membuat beberapa angka dengan angka atau
perintah dengan meletakkan beberapa gambar di angka yang sama dengan subplot
perintah.
UMUM PITFALLS
Pastikan untuk menggunakan .* * bukan ketika Anda mengalikan dua foto
bersama titik-titik-oleh. Jika tidak, Matlab akan melakukan matriks perkalian dari
dua, yang akan berlangsung selamanya dan menghasilkan total omong kosong.
Pastikan untuk tidak lupa titik koma di akhir perintah. Jika tidak, Anda mungkin
suatu ketika duduk untuk menonton semua nilai piksel dari gambar yang
dihasilkan oleh gulir pada layar!
Jangan gunakan kecuali untuk loops benar-benar perlu. Penggunaan untuk
loops akan membuat Anda mengambil program banyak lagi.
Lanjutan gambar pengolahan
Gambar reshaping
Terkadang kita nyaman untuk menunjukkan sebuah gambar sebagai vector bukan
sebagai matriks. Jika saya adalah gambar dalam bentuk matriks,
Iv = saya (:);
akan membuat vector IV yang ditumpuk masukan adalah kolom saya. Untuk tumpukan
baris, jenis
Ini saya = '; IV = Ia (:);
atau
kembali (saya ', panjang (saya (:)), 1);
Untuk kembali ke sebuah vector matriks formulir, menggunakan kembali.
Blok pengolahan
Jika Anda ingin membagi sebuah gambar ke dalam blok dan memproses setiap blok
secara individu, Anda dapat menggunakan fungsi blkproc. Fungsi ini akan
memungkinkan Anda untuk proses berbeda blok serta tumpang tindih blok. Dengan
sedikit kreativitas, fungsi ini dapat digunakan untuk menghilangkan banyak loops yang
lain akan diperlukan. Beberapa fungsi yang terkait im2col, col2iml, dan colfilt.
Fungsi fungsi
Ada beberapa fungsi lain yang mengambil fungsi sebagai argumen dan menerapkannya
dalam cara khusus untuk gambar. Lihat blkproc, nlfilter, colfilt, dan mfilter2
untuk rincian.
N-dimensi array
Matlab 5,0 memungkinkan Anda untuk membuat dan memanipulasi N-dimensi array.
Dalam kebanyakan kasus, sintaks yang mudah adalah perpanjangan dari matriks sintaks.
Misalnya, untuk membuat deret yang 3x3x2, menggunakan
yang x = (3,3,2);

Stanley J. Reeves
sjreeves@eng.auburn.edu
Last modified: Rabu 31 Desember 12:58:52 cst 1997

You might also like