17 Eylül 2014 Çarşamba

Matlab'da Görüntü İşleme ve Yeşil Renkli Bölgeleri İşaretleme

Bir önceki yazımızda Matlab'da nasıl görüntü okuyacağımızı ve ekranda nasıl göstereceğimizi anlatmıştım . Şimdi okunan bu görüntüdeli yeşil bölgeleri belirleyip bu bölgeleri orijinal resimde işaretleyelim ;

Kodlarımızı yazmaya bir önceki yazımızda anlattığımız görüntü okumayla başlayalım ;

imaqtool
original= imread('C:\Users\mustafa\Desktop\Matlab klasörü\matlab proje denemesi\yesil.j2c');
imshow(original)



İkinci olarak , rgb düzeninde çekilmiş olan resmimizin kırmızı , yeşil ve mavi renkli pixel değerlikleri üç farklı değişkene atanacaktır , daha sonra subplot komutu ile ekranda bunları ayrı ayrı göstermeyi deneyeceğiz .

red   = original(:, :, 1);  %% kırmızı pixel değerlikleri red adlı değişkene atandı.
green = original(:, :, 2);  %% yeşil pixel değerlikleri green adlı değişkene atandı.
blue  = original(:, :, 3);  %% mavi pixel değerlikleri blue adlı değişkene atandı.
subplot(2,2,1),imagesc(red) 
subplot(2,2,2),imagesc(green)
subplot(2,2,3),imagesc(blue)

subplot komutu ile ekranın belirlenen koordinatlarına red , green ve blue resimleri yerleştirildi , daha sonra imagesc fonksiyonu ile bu resimleri ekranda gösterdik . bu komutlar ışığında son görüntümüz şu şekilde olur ;



Dikkat edersek her şeklin üzerinde şekli anlamamız için isimleri yazmakta , title(red); , title(green); , title(blue); şeklinde her bir şekil için başlık yazdırdık ve şekiller anlamlı hale geldi .
Ve ayrıca her şeklin kendi renginin olduğu bölgeler daha açık olarak dikkat çekiyor . Bu şekilde de kodlarımızı kontrol etme şansımız var .

Şimdi şeklimizdeki yeşil renkli bölgeleri bulup çıkarmayı deneyelim .


GreenPixels = green - red/2 - blue/2;
subplot(2,2,4),imagesc(GreenPixels)

GreenPixels adlı değişkene yeşil renklerin yoğun olduğu bölgeler atandı ve bu bölgeler ekranda gössterildi .

Yeşil rengi yoğun olan bölgeleri de ekranın sağ alt köşesine basarak göstermiş olduk . 

Artık yeşil pixel değeri yüksek olan kısımları ekrana basıp bunun dışındaki kısımları atmayı deneyelim .

GreenArea = GreenPixels > 60;%%eşik değeri 50 kabul edildi.

SonHal=imfill(GreenArea,'holes');
imshow(SonHal)

Böylece yeşil bölgeleri belirli hale getirebilmek için bir eşik değeri belirledik ve bu eşik değeri altında kalan kısımlar tamamen siyah bölgede kalmış oldu , şekilde yeşil bölgelerin yoğun olduğu yerler beyaz halde bulundu . 


Projenin devamında , orijinal resmin üzerinde yeşil bölgeleri merkezlerinden işaretledik ve bu merkezlerin sayısını command window da gösterdik . Bunun için bir döngü kullanmanız gerekmektedir , İlgili arkadaşlar yaptıklarını bizlerle de paylaşabilirler , dileyenler mail atabilir ve son kısmı karşılaştırma imkanı bulabilirler . İyi çalışmalar :) .
mstfylmz38@gmail.com



Hiç yorum yok :

Yorum Gönder