Anda di halaman 1dari 13

c    




c   



 c

  ! "!"


Banyak dari pengolahan gambar berkaitan dengan membuat gambar tampak lebih
baik dengan manusia.
Oleh karena itu kita harus menyadari keterbatasan sistem visual manusia. Gambarpersepsi
terdiri dari dua langkah dasar:
1. menangkap gambar dengan mata,

2. mengenali dan menafsirkan gambar dengan korteks visual di otak.


Variabilitas kombinasi dan besar dari langkah-langkah di uences cara-
cara kitamemandang dunia sekitar kita.
Ada beberapa hal yang perlu diingat:
1. Diamati intensitas bervariasi untuk latar belakang. Sebuah balok tunggal abu-
abuakan terlihat lebih gelap jika ditempatkan pada latar
belakang putih daripada jikaditempatkan pada latar belakang
hitam. Artinya, kita tidak melihat skala abu-abuseperti mereka, tetapi lebih karena
mereka eh di dari lingkungannya. Pada gambar1.20 kotak abu-abu muncul pada dua latar
belakang di erent. Perhatikan berapabanyak gelap alun-
alun muncul ketika dikelilingi oleh abu-
abu terang. Namun, duakotak pusat memiliki intensitas yang sama persis.

2. Kita bisa mengamati intensitas tidak ada seperti bar di berbagai tingkat terus menerus abu-
abu. Lihat untuk contoh gambar 1.21. Gambar ini bervariasi terus dariterang ke gelap sewakt
u kita perjalanan dari kiri ke kanan. Namun, mustahil bagi mata
kita tidak dapat melihat tepi beberapa horisontal dalam gambar ini.
3. Sistem visual kami cenderung menembak terlalu rendah
dr atau overshoot sekitarbatas daerah intensitas di erent. Misalnya, kami memiliki gumpalan a
bu-abu terangpada latar belakang abu-abu gelap. Seperti mata kita perjalanan dari latar
belakang gelap ke daerah terang, batas daerah muncul lebih
ringan daripada sisanya.Sebaliknya, menuju arah lain, batas latar belakang muncul lebih
gelap dari sisanya.
Kita telah melihat dalam bab sebelumnya bahwa matriks dapat ditangani sangat elebih
efisien di Matlab. Gambar dapat dianggap
sebagai matriks yang elemen adalahnilai pixel gambar. Dalam bab ini kita akan menyelidiki b
agaimana kemampuanmatriks Matlab memungkinkan kita
untuk menyelidiki gambar dan sifat mereka.
#   $ %  

Misalkan anda duduk di komputer Anda dan sudah mulai Matlab. Anda akan memilikijendela
command Matlab terbuka, dan di dalamnya Matlab prompt

>>
siap menerima perintah. Ketik perintah
>> w = imread ('wombats.tif');

Ini mengambil nilai abu-abu dari semua piksel di grayscale wombats.tif dam menempatkan
mereka semua ke dalam matriks w. w matriks ini sekarang menjadi variabel Matlab, dan
sehingga kita dapat melakukan operasi berbagai matriks di atasnya.

Secaraumum fungsi imread membaca nilai pixel dari gambar file, danmengembalikan sebuah
matriks semua nilai pixel.
Dua hal yang perlu diperhatikan tentang perintah ini:

1.Ê Itu berakhir dalam titik


koma, ini memiliki ect e tidak menampilkan hasil dariperintah ke
layar. Sebagai hasil dari perintah ini khusus adalah matriks ukuran 256 x 256 atau
dengan 65536 elemen, kita tidak benar-benar ingin semua nilai yang ditampilkan.
2.Ê The wombats.tif nama diberikan dalam tanda kutip tunggal. Tanpa mereka, Matlabaka
n berasumsi wombats.tif bahwa adalah nama variabel, bukan nama seorang le.

Sekarang kita dapat menampilkan matriks ini sebagai grayscale:

>> angka, imshow (w), pixval di


Ini benar-benar tiga perintah pada satu baris. Matlab memungkinkan banyak
perintahuntuk dimasukkan pada baris yang sama, dengan
menggunakan koma untukmemisahkan perintah di erent. Tiga perintah kita menggunakan
di sini adalah:
angka, yang menciptakan gure di layar. Gure adalah jendela di mana sebuah grafisobjek
dapat ditempatkan. Objek mungkin termasuk gambar, atau berbagai jenis grafik.
imshow (g), yang menampilkan g matriks sebagai gambar.
pixval pada, yang ternyata pada nilai-nilai piksel pada gambar kita. Ini adalah tampilan
nilai abu-abu dari piksel dalam gambar. Mereka muncul di bagian bawah dalam bentuk:

CxR=P

dimana c adalah nilai kolom dari pixel yang diberikan; r adalah baris nilai, dan nilai abu-
abu wombat. tif adalah grayscale 8-bit, nilai-nilaipiksel muncul sebagai bilangan
bulat dalam rentang 0-255.

Ditunjukkan pada gambar 1.22

Jika tidak ada gambar terbuka, maka perintah imshow, atau perintah yang lain yang
menghasilkan objek grafis, akan membuka gambar baru untuk menampilkan objek.
Namun, pada praktik yang baik untuk mengginakan perintah angka setiap kali anda ingin
membuat gambar yang baru. Kita bisa menampilkan gambar ini secara langsung, tanpa
menyimpan nilai abu-abu untuk sebuah matriks, dengan perintah:

imshow('wombats.tif')

Namun, lebih baik menggunakan sebuah matriks, mengingat ini ditangani sangat efisien
di matlab.

  &

Seperti yang akan kita bahas dalam bab 11, kita perlu membedakan warna ke dalam
beberapa cara standar, biasanya sebagai bagian dari koordinat tiga dimensi, seperti
subset ini disebut model warna. Sebenarnya ada sejumlah metode berbeda untuk
menggambarkan warna, tetapi untuk menampilkan gambar dan penyimpanan model
standar RGB, yang kita dapat bayangkan semua warna berada di dalam kubus warna
sisi seperti ditunjukkan pada gambar 1.23. Warna sepanjang diagonal hitam-
putih, ditunjukkan dalam diagram

sebagai garis putus-putus, merupakan titik ruang di mana semua RGB, nilai-nilai yang
sama. Mereka adalah intensitas abu-abu. Kami juga mungkin berpikir dari sumbu kubus
warna sebagai diskretisasi untuk bilangan bulat dalam rentang 0-255. RGB adalah
standar untuk tampilan warna: di monitor komputer; di TV. Tapi ini bukan cara yang baik
dalam menggambarkan warna. Bagaimana, misalnya, akan Anda membedakan coklat
muda menggunakan RGB Seperti yang akan kita lihat juga dalam bab 11, ada beberapa
warna yang tidak real dengan model RGB, dalam bahwa mereka akan memerlukan nilai
negatif negatif dari satu atau dua komponen RGB . Matlab menangani24 bit RGB gambar
dalam banyak cara yang sama seperti abu-abu. Kita bisa menyimpan nilai-nilai warna
pada matriks nilai dan melihat hasilnya:

>> a=imread('autumn.tif');

>> figure,imshow(a),pixval on

Perhatikan sekarang bahwa nilai pixel sekarang terdiri dari daftar tiga nilai, memberikan
komponen merah, hijau dan biru warna dari pixel yang diberikan. Sebuah perbedaan
penting antara jenis gambar dan grayscale yang dapat dilihat dengan perintah

>> size(a)

yang mengembalikan tiga nilai: jumlah baris, kolom, dan halaman dari sebuah a, yang
merupakan tiga dimensi matriks, juga disebut array multidimensi. Matlab dapat
menangani array dimensi apapun, dan sebuah contoh. Kita dapat memikirkan a sebagai
tumpukan dari tiga matriks, masing-masing dengan ukuran yang sama. Untuk mendapat
salah satu nilai RGB pada lokasi tertentu, kami menggunakan metode pengindeksian
mirip dengan yang di atas. Misalnya

>> a(100,200,2)
mengembalikan nilai warna kedua (hijau) di pixel berturut-turut 100 dan 200 kolom. Jika
kita ingin semua nilai warna pada titik itu, kita bisa menggunakan

>> a(100,200,1:3)

Namun, Matlab memungkinkan cara pintas nyaman untuk daftar semua nilai sepanjang
dimensi tertentu, cukup menggunakan colon sendiri:

>> a(100,200,:)

Sebuah fungsi yang berguna untuk memperoleh nilai RGB impixel; perintah

>> impixel(a,200,100)

Untuk mengembalikan nilai merah, hijau dan biru pixel di kolom 200, baris 100.
Perhatikanlah bahwa urutan pengindeksan adalah sama dengan yang disediakan oleh
pixval pixval pada perintah. Hal ini berlawanan dengan baris, urutan kolom untuk
pengindeksan matriks.Perintah ini juga berlaku untuk gambar abu-abu:

>> impixel(g,100,200)

akan kembali tiga nilai, tapi karena g adalah satu dua dimensi matriks, semua tiga nilai
akan sama.

1.13 Warna Gambar Terindeks

Komando:

>> figure,imshow('emu.tif'),pixval on

menghasilkan gambar berwarna yang bagus emu. Namun, nilai pixel, bukannya tigabilan
gan bulat karena mereka untuk gambar RGB diatas, adalah tiga fraksi antara 0 dan 1. Apa
yang terjadi di sini? Jika kita coba simpan ke dalam matriks dan kemudian menampilkan
hasilnya:

>> em=imread('emu.tif');

>> figure,imshow(em),pixval on

kita memperoleh gambar, gelap hampir tidak dibedakan, dengan nilai abu-abubilangan
bulat, menunjukkan bahwa mereka sedang ditafsirkan sebagai grayscale yang tunggal.
Bahkan gambar emu.tif adalah contoh dari sebuah gambar terindeks, terdiri dari dua
matriks:peta warna, dan indeks peta warna. Menetapkan foto pada pengambilan matriks
tunggal hanya sampai indeks, kita perlu mendapatkan peta warna juga:

>> [em,emap]=imread('emu.tif');

>> figure,imshow(em,emap),pixval on
Matlab menyimpan nilai-nilai RGB dari suatu gambar diindeks sebagai nilai tipe ganda,
ganda, dengan nilai antara 0 dan 1.

Informasi dari gambar anda

Banyak informasi dapat diperoleh dengan fungsi iminfo. Misalnya, kita mengambil
gambar emu.tif diindeks kita dari atas.

>> imfinfo('emu.tif')

ans =

Filename: 'emu.tif'

FileModDate: '26-Nov-2002 14:23:01'

FileSize: 119804

Format: 'tif'

FormatVersion: []

Width: 331

Height: 384

BitDepth: 8

ColorType: 'indexed'

FormatSignature: [73 73 42 0]

ByteOrder: 'little-endian'

NewSubfileType: 0

BitsPerSample: 8

Compression: 'PackBits'

PhotometricInterpretation: 'RGB Palette'

StripOffsets: [16x1 double]

SamplesPerPixel: 1

RowsPerStrip: 24

StripByteCounts: [16x1 double]

XResolution: 72

YResolution: 72
ResolutionUnit: 'Inch'

Colormap: [256x3 double]

PlanarConfiguration: 'Chunky'

TileWidth: []

TileLength: []

TileOffsets: []

TileByteCounts: []

Orientation: 1

FillOrder: 1

GrayResponseUnit: 0.0100

MaxSampleValue: 255

MinSampleValue: 0

Thresholding: 1

Banyak dari informasi ini tidak berguna bagi kita, tetapi kita bisa ,melihat ukuran gambar
dalam piksel, ukuran file (dalam byte), jumlah bit per piksel(ini diberikan oleh kedalaman
bit), dan warna (dalam hal ini diindeks).

Sebagai perbandingan, mari kita lihat output dari file true color (menampilkanbeberapa
baris hanya output pertama):

>> imfinfo('flowers.tif')
ans =
Filename: [1x57 char]
FileModDate: '26-Oct-1996 02:11:09'
FileSize: 543962
Format: 'tif'
FormatVersion: []
Width: 500
Height: 362
BitDepth: 24
ColorType: 'truecolor'

Sekarang kita akan menguji fungsi ini pada citra biner:

>> imfinfo('text.tif')
ans =
Filename: [1x54 char]
FileModDate: '26-Oct-1996 02:12:23'
FileSize: 3474
Format: 'tif'
FormatVersion: []
Width: 256
Height: 256
BitDepth: 1
ColorType: 'grayscale'

Apa yang terjadi di sini? Kami memiliki citra biner, namun jenis warna yang diberikan
sebagai grayscale. Faktanya adalah bahwa Matlab tidak membedakan antaragambar skala
abu- abu dan binary: biner gambar hanya kasus khusus dari grayscale yang hanya
memiliki dua intensitas. Namun, kita dapat melihat text.tif yang merupakan citra biner karena
jumlah bit per pixel hanya satu.

 '((c)*c+ 

Elemen dalam matriks Matlab mungkin memiliki sejumlah di_erent tipe data numerik,yang
paling umum adalah yang tercantum dalam tabel 1.1. Ada yang lain, tetapi mereka yang
terdaftar akan cukup untuk semua pekerjaan kami dengan gambar. Jenis data juga
berfungsi, kita dapat mengkonversi dari satu jenis yang lain. Sebagai contoh:
>> a=23;
>> b=uint8(a);
>> b
b=

>> whos a b
Name Size Bytes Class
a 1x1 8 double array
b 1x1 1 uint8 array

Meskipun variabel a dan b memiliki nilai numerik yang sama, mereka adalah tipe data yang
berbeda. Satu pertimbangan penting (yang kita akan pertimbangkan lebih) adalah bahwa
operasi aritmatika tidak diijinkan dengan tipe data int8, int16, uint8 dan uint16. Sebuah
grayscale yang dapat terdiri dari piksel yang nilainya adalah dari tipe data uint8.Gambar-
gambar ini sehingga cukup memadai dalam hal ruang penyimpanan, karena setiap piksel
hanya membutuhkan satu byte. Namun, operasi aritmatika tidak diijinkan pada tipe data,
sebuah citra uint8 harus dikonversi untuk dua kali sebelum aitmatika apapun dicoba. Kita
dapat mengkonversi gambar dari satu jenis gambar yang lain. Tabel 1.2 daftar semua fungsi
Matlab untuk mengkonversi antara jenis foto berbeda. Perhatikan bahwa fungsi grayrgb,
tidak menciptakan sebuah warna gambar, tetapi semua gambar yang piksel warna yang sama
seperti sebelumnya. Hal ini dilakukan hanya dengan mereplikasi nilai abu-abu setiap piksel:
abu-abu dalam foto RGB diperoleh dengan persamaan dari nilai-nilai merah, hijau dan biru.

,('c ' -c &

Sebuah gambar dapat diwakili sebagai matriks nilai piksel yang kelabu. Masalahnya di sini
adalah untuk menampilkan bahwa matriks pada layar komputer. Ada banyak faktor yang
akan mempengaruhi penampilan gambar, antara lain:
1. pencahayaan,
2. jenis monitor dan pengaturan,
3. kartu grafis,
4. resolusi monitor.
Gambar yang sama mungkin muncul sangat berbeda bila dilihat pada monitor CRT kusam
atau pada monitor LCD terang. Resolusi dapat juga mempengaruhi sebuah tampilan foto;
resolusi yang lebih tinggi dapat menyebabkan gambar mengambil daerah kurang fisik pada
layar, tetapi ini mungkin menetral oleh rugi pada kedalaman warna: monitor mungkin hanya
untuk menampilkan 24 -bit warna pada resolusi rendah. Jikamonitor bermandikan cahaya
terang (sinar matahari misalnya) tampilan gambar dapat dikompromikan. Selanjutnya, sistem
visual sendiri akan merubah penampilan gambar: gambar yang sama, dilihat oleh
dua orang, mungkin tampak memiliki karakteristik erent untuk setiap orang. Untuk tujuan
kita, kita akan mengasumsikan bahwa pengaturan komputer se-optimal mungkin, dan monitor
dapat secara akurat mereproduksi nilai-nilai yang diperlukan atau warna abu-abu
pada gambar apapun. Sebuah fungsi Matlab yang sangat dasar untuk tampilan gambar adalah
gambar. Fungsi ini hanya menampilkan matriks sebagai gambar. Namun, tidak mungkin
memberikan hasil yang sangat baik. Sebagai contoh:

>> c=imread('cameraman.tif');
>> image(c)

tentu akan menampilkan juru kamera, tapi mungkin dalam campuran warna yang aneh,dan
dengan beberapa peregangan. Warna aneh berasal dari kenyataan bahwaperintah gambar men
ggunakan peta warna saat ini untuk menetapkan warna untuk elemen matriks. Pada default
warna disebut jet, dan terdiri dari 4 warna sangat cerah, yang tidak sesuai untuk tampilan
citra grayscale. Untuk menampilkan gambar dengan benar, kita perlu menambahkan
beberapa perintah ekstra garis gambar.
1. truesize, yang menampilkan satu elemen matriks (dalam hal ini suatu pikselgambar)
untuk setiap pixel layar. Lebih formal, kita dapat menggunakan truesize ([256256]) dimana
komponen-komponen vektor memberikan jumlah piksel layar secara vertikal dan horizontal
untuk digunakan dalam layar. Jika vektor tidak ditentukan, standarnya ke ukuran gambar.
2. sumbu yang diberi label sumbu,
3. colormap (abu-abu (247)), yang menyesuaikan gambar peta warna untuk menggunakan
warna warna abu-abu saja. Kita dapat menemukan jumlah tingkat abu-abu yang digunakan
oleh gambar kamera dengan

>> size(unique(c))
ans =
247 1
Karena gambar kamera sehingga menggunakan 247 tingkat abu-abu yang berbeda, kita hanya
perlu bahwa jumlah abu-abu dalam peta warna. Jadi perintah yang
lengkap untukmelihat gambar ini akan menjadi seperti ini

>> image(c),truesize,axis off, colormap(gray(247))

Kita mungkin untuk menyesuaikan peta warna untuk menggunakan warna yang kurang
atau lebih, namun ini dapat memiliki efek dramatis pada hasil. Perintah

>> image(c),truesize,axis off, colormap(gray(512))


akan menghasilkan gambar yang gelap. Hal ini terjadi karena hanya 247 unsur peta pertama
yang akan digunakan oleh gambar untuk tampilan, dan ini semua pada paruh pertama peta
warna; sehingga semua abu-abu gelap. Di sisi lain,

>> image(c),truesize,axis off, colormap(gray(128))

akan menghasilkan gambar yang sangat ringan, karena setiap piksel dengan tingkat keabuan
yang lebih tinggi dari 128 hanya akan memilih yang tertinggi nilai abu-abu (yang
putih) dari peta warna. Perintah gambar bekerja dengan baikuntuk gambar warna diindeks,
selama kita ingat untuk menggunakan
imread untuk mengambil peta warna juga:

>> [x,map]=imread('cat.tif');
>> image(x),truesize,axis off,colormap(map)
Untuk gambar true color, data gambar akan dibaca (imread) sebagai array tiga dimensi.
Dalam kasus seperti itu, gambar akan mengabaikan peta warna saat ini, dan menetapkan
warna untuk tampilan yang didasarkan pada nilai-nilai dalam array. Jadi

>> t=imread('twins.tif');
>> image(t),truesize,axis off

akan menghasilkan gambar kembar yang benar.


Secara umum fungsi gambar dapat digunakan untuk menampilkan setiap gambar atau
matriks. Namun, ada perintah yang lebih nyaman dan melakukan sebagian besar pekerjaan
pemetaan warna untuk kita, kita membahas ini dalam bagian berikutnya.

.c  */

Grayscale

Kita telah melihat bahwa jika x adalah matriks jenis uint8, maka perintah
Imshow(x)
akan menampilkan x sebagai gambar. Hal ini wajar, karena tipe data uint8 membatasi nilai
hanya untuk nilai integer antara 0 dan 255. Namun, tidak semua gambar matriks datang
begitu baik terbungkus ke dalam tipe data, dan banyak dari perintah pengolahan citra Matlab
matriks menghasilkan output yang tie ganda. Kita memiliki dua pilihan dengan matriks jenis
ini:
1.Ê mengkonversi ke tipe uint8 dan kemudian menampilkan,
2.Ê menampilkan matriks langsung.

Pilihan kedua adalah dimungkinkan karena imshow akan menampilkan matriks tipeganda seb
agai grayscale selama elemen matriks adalah antara 0-1. Misalkan kita mengambil gambar
dan mengubahnya ke tipe doubel:

>> c=imread('caribou.tif');
>> cd=double(c);
>> imshow(c),figure,imshow(cd)

Hasilnya seperti yang ditunjukkan pada gambar 1.24


Namun, karena Anda dapat melihat, angka 1,24 (b) tidak terlalu mirip dengan gambar
aslinya sama sekali! Hal ini karena untuk tipe ganda matriks, fungsi imshwow mengharapkan
nilai untuk berada di antara 0 dan 1, dimana 0 adalah ditampilkan sebagai hitam dan 1
sebagai putih. Sebuah nilai v, dengan 0>v>1 ditampilkan sebagai gambar abu-abu[255v].

Sebaliknya, nilai lebih besar dari 1 akan ditampilkan sebagai 1 (putih) dan nilai kurang dari 0
akan ditampilkan sebagai nol (hitam). Pada gambar karibu, setiap piksel memiliki nilai lebih
besar dari atau sama dengan 1 (pada kenyataannya nilai minimum21), sehingga setiap piksel
akan ditampilkan sebagai putih. Untuk menampilkan cd matriks, kita perlu skala 0-1. Hal ini
mudah dilakukan hanya denganmembagi semua nilai dengan 255:

>> imshow(cd/255)

dan hasilnya akan menjadi gambar yang karibu seperti ditunjukkan pada gambar 1.24(a). Kita
dapat bervariasi display dengan mengubah skala dari matriks. Hasil dariperintah:

>> imshow(cd/512)
>> imshow(cd/128)

ditunjukkan dalam angka 1,25. Membagi oleh 512 gelap gambar, karena semua nilai matriks
sekarang antara 0 dan 0,5, sehingga pixel terang dalam gambar adalah setengah abu-abu.
Membagi dengan 12 berarti bahwa rentangnya adalah 0-2, dan semua piksel dalam kisaran 1-
2 akan ditampilkan sebagai sebagai putih. Dengan demikian gambar memiliki penampilan,
lebih mudah diedit.
Tampilan dari hasil perintah yang output adalah matriks tipe ganda bisa sangatdipeng
aruhi oleh pilihan bijaksana dari faktor skala. Kita dapat mengubah gambar asli untuk
menggandakan lebih benar menggunakan fungsi im2double. Hal ini berlakuskala yang tepat
sehingga nilai output antara 0 dan 1. Jadi perintah:

>> cd=im2double(c);
>> imshow(cd)

akan menghasilkan gambar yang benar. Hal ini penting untuk membuat perbedaan antara dua
fungsi an 1m2double: perubahan double tipe data tetapi tidak mengubah nilai numerik;
perubahan im2double baik tipe data numerik dan nilai. Pengecualian tentu saja adalah jika
gambar asli adalah tipe ganda, di manaim2double kasus tidak apa-apa. Meskipun perintah
ganda tidak banyak berguna untuk tampilan gambar langsung, dapat sangat berguna untuk
aritmatika gambar. Kita telah melihat contoh ini di atas dengan skala. Sesuai dengan fungsi
ganda dan im2double adalah uint8 dan im2uint8. Jika kita mengambil gambar kita cd tipe
ganda, sehingga semua elemennya adalah antara 0 dan 1, kita dapat mengubahnya kembali ke
gambar tipe uint8 dalam dua cara:

>> c2=uint8(255*cd);
>> c3=im2uint8(cd);

Penggunaan im2uint8 lebih disukai, dibutuhkan jenis data lain sebagai masukan, dan selalu
mengembalikan hasil yang benar.

  & 

Ingat bahwa gambar biner akan hanya memiliki dua nilai: 0 dan 1. Matlab tidak memilili tipe
data biner seperti itu, tetapi tidak memiliki ag logis, dimana uint8 nilai sebagai 0 dan 1 dapat
diartikan sebagai data logis. Data logis ini akan ditetapkan dengan menggunakan operasi
relasionali ==, <atau> atau operasi lainnya yangmemberikan ya / tidak ada jawaban.
Misalnya, kita mengambil karibu matriks danmembuat matriks baru dengan
>> cl=c>120;

(kita akan melihat lebih dari jenis operasi dalam bab 2.) Jika sekarang kita memeriksa semua
variabel kita dengan whos, output akan mencakup baris:

cl 256x256 65536 uint8 array (logical)

ini artinya bahwa perintah

>> imshow(cl)

Akan ditampilkan matriks sebagai gambar biner; hasilnya ditunjukkan pada gambar 1.26

Misalkan kita menghapus data logis dari cl; hal ini dapat dilakukan dengan perintah
sederhana:
>> cl = +cl;

Sekarang output yang dapat dimasukkan pada garis:


cl 256x256 65536 uint8 array

Jika kita sekarang mencoba untuk menampilkan matriks dengan imshow, kamimendapatkan
hasil yang ditunjukkan pada gambar 1,26 (b). Sebuah gambar yang sangat mengecewakan!
Tapi hal ini diharapkan, dalam matriks jenis uint8, putih adalah 255, 0 adalah hitam, dan
1 adalah abu-abu yang sangat gelap yang dibedakan dari hitam. Untuk kembali
ke gambar dilihat, kita bisa mengubah data logis kembali, dan tampilan hasilnya:

>> imshow(logical(cl))

Atau konversi sederhana ke tipe duble:


>> imshow(double(cl))
Kedua perintah tersebut akan menghasilkan gambar seperti yang ditunjukkan pada gambar
1.26

0& (c& 

Skala abu- abu pada gambar bisa diubah menjadi urutan gambar biner dengan memecah
mereka menjadi bidang bit mereka. Jika kita mempertimbangkan nilai abu-abu setiap pixel
dari sebuah gambar 8 bit sebagai kata biner 8 bit, maka sedikitt bidang 0 terdiri dari bit
terakhir dari masing-masing nilai abu-abu. Karena bit ini memiliki efek dalam besarnya nilai,
hal tersebut disebut bit yang penting, dan bidang yang terdiri dari bidang bit yang penting.
Samahalnya dengan bidang ke-7 bit terdiri dari bit pertama di setiap nilai. Bit ini memiliki
efek terbesar dalam besarnya nilai, sehingg disebut bit yang paling penting, dan bidang yang
terdiri dari bidang bit yang paling penting.
Jika kita mengambil gambar grayscale, kita mulai dengan membuat sebuah matriks type
doubel, ini berarti kita bisa menentukan aritmetika pada nilainya.
>> c=imread('cameraman.tif');
>> cd=double(c);

Sekarang kita membatasi sedikit bidang dengan hanya membagi matriks cd dengan dua daya
berturut-turut, kemudian membuang sisanya, dan melihat jika bit yang terakhir adalah 0 atau
1. Kita bisa melakukan hal ini denga fungsi mod.
>> c0=mod(cd,2);
>> c1=mod(floor(cd/2),2);
>> c2=mod(floor(cd/4),2);
>> c3=mod(floor(cd/8),2);
>> c4=mod(floor(cd/16),2);
>> c5=mod(floor(cd/32),2);
>> c6=mod(floor(cd/64),2);
>> c7=mod(floor(cd/128),2);

Ini semua ditampilkan dalam gambar 1,27. Perhatikan bahwa bidang yang penting, c0, adalah
untuk semua maksud dan tujuan rangkaian yang acak, dan sebagai nilai indeks meningkatkan
sedikit bidang, lebih banyak gambar yang muncul. Yang paling penting dari bidang ini,
C7,sebenarnya merupakan ambang gambar pada tingkat 127;
>> ct=c>127;
>> all(c7(:)==ct(:))
ans =
1

Kita akan membahas thresholding dalam bab 7. Kita dapat mengembalikan dan menampilkan
gambar asli dengan

>> cc=2*(2*(2*(2*(2*(2*(2*c7+c6)+c5)+c4)+c3)+c2)+c1)+c0;
>> imshow(uint8(cc))

1*-* c

Resolusi ruang adalah kerapatan pixel di atas gambar: semakin besar resolusi ruang, semakin
banyak piksel yang digunakan untuk menampilkan gambar. Kita dapat melakukan percobaan
dengan resolusi ruang dengan Matlab

Imresize fungsi. Misalkan kita memiliki 256 x 256 grayscale 8 bit disimpan dalam matriks x.
Kemudian perintah
Imresize (x, ½);
Akan membagi dua ukuran gambar. Hal ini dilakukan dengan mengambil setiap baris yang
lain dan setiap kolom lainnya, sehingga hanya menyisakan unsur-unsur matriks yang baris
dan kolom indeks bahkan;

Jika kita menerapkan imresize untuk hasil dengan 2 daripada parameter ½, semua piksel yang
diulang untuk menghasilakn gambar dengan ukuran yang ssama seperti aslinya, tetapi dengan
setengah resolusi di setiap arah:
Resolusi efektif ini hanya gambar baru 128 x 128. Kita bisa melakukan semua ini dalam satu
baris:
x2 = imresize (imresize (x, 1 / 2), 2);
dengan mengubah parametar imresize, kita dapat mengubah resolusi efektif ddari gambar
untuk jumlah yang kecil.

Command Effective resolution


imresize(imresize(x,1/4),4); 64 x 64
imresize(imresize(x,1/8),8); 32 x 32
imresize(imresize(x,1/16),16); 16 x 16
imresize(imresize(x,1/32),32); 8x8

Untuk melihat dampak dari perintah, misalkan kita menerapkannya pada newborn.tifgambar:
x=imread('newborn.tif');

pengaruh blockniess meningkatkan atau pixelization menjadi cukup diucapkan sebagai


resolusi berkurang; bahkan pada resolusi 128 x 128 detail halus, seperti ujung jari- jari bayi,
kurang jelas, dan di tepi semuanya 64 x 64 sekarang cukup blocky. Pada 32 x 32 gambar
hampir tidak dikenali daripada 16 x 16 dan 8 x 8 gambar menjadi dikenali.

Anda mungkin juga menyukai