Görüntü işleme; tasarım, imalat, güvenlik, tıp, elektronik, makine ve jeodezi gibi alanlarda çok geniş bir uygulama alanı bulmuştur. Aşağıda, uygulama alanlarına örnekler verilmiştir:
► Askeri (hedef tanıma, izleme)
► Tıp (damar analizi, bilgisayarlı tomogrofi, ultrason)
► Güvenlik (nesne takibi, hareket algılama, yüz tanıma)
► Trafik (trafik kontrol, plaka tanıma, trafik ışığı (işareti) tanıma)
► Endüstri (nesne sayma, kalite kontrol, robotik uygulamalar)
► Tarımsal uygulamalar (ekin verimliliği tespiti)
► Astronomi (uydu görüntüleri ile hava tahmini)
► Jeodezi ve Fotogrametri (uzaktan algılama)
► Perakende (insan sayma, davranış analizi, mağaza izleme)
► Çevre güvenliği (çevre kirliliği tespiti)
Bu yazımızda yukarıdaki uygulamaları geliştirmek için kullanılan, Matlab’ın görüntü işleme komutlarının bazılarını örneklerle inceleyeceğiz. Yazının devamında örnek bir uygulama yapmaya çalışacağız.
imread: imread ile üzerinde çalışılmak istenilen fotoğraf bir değişkene atanarak matlab workspace için tanımlanır ve ardından imshow ile pencerede gösterilebilir. Workspace’te imgenin boyutu, çözünürlüğü gibi bilgileri görebilirsiniz.
İmtool: imtool ile bazı işlemlerin yapılabileceği bir pencere açılır.
Örnek kodları yazarken workspacedeki verileri temizlemek için, clear all ve clc komutlarını en başa yazmayı unutmayalım.
I = imread(‘ornek.jpg’)
imshow(I)
imtool(I)
Warp: görüntüyü (içinde yazı olan görüntü daha iyi olur ) belli yüzeylerde gösterir.
resim = imread('rice.png');
[x1,y1,z1] = cylinder;
[x2,y2,z2] = sphere;
imshow(resim); title('Orijinal resim');
figure
subplot(1,2,1); warp(x1,y1,z1,resim); title('cylinder');
subplot(1,2,2); warp(x2,y2,z2,resim); title('sphere');
Tür dönüşüm komutları
rgb2gray: renkli görüntüyü gri seviyeye çevirir.
hsv2rgb: hsv renkleri rgb renklere çevirir.
graythresh: graythreshold komutu görüntüdeki parlaklık eşiğini otomatik olarak belirler ve sonuç olarak 0 – 1 arasında bir sayı (level) oluşturur. Görüntüdeki parlaklık sınırları ile yapacağımız işlemlerde graythreshold’ tan elde ettiğimiz sayıyı kullanırız. Görüntü üzerinde belirli işlemleri yapabilmemiz için öncelikle gri seviyede çalışmamız gerekir.
Bunun için I= rgb2gray(I) komutu kullanılır. Bu kod örneği ile görüntünün binary şekli elde edilir.
level = graythresh(I);
bw = im2bw(I,level);
bw = bwareaopen(bw, 50);
figure; imshow(bw);
im2uint8: uint8 renk hassasiyetine dönüştürür. Genelde görüntüler uint8 türündedir. Her piksel İşaretsiz 8 bit (0 – 255) arası değere sahiptir.
Diğer dönüşüm komutları; demosaic, gray2ind, grayslice,im2int16, label2rgb ,im2double, im2uint16, mat2gray…
Uzamsal dönüşüm komutları
Kodların adlarından anlaşılacağı gibi fiziksel değişiklikler yapabileceğiniz bazı komutlar:imcrop, imresize, imrotate, imtransform…
Görüntü analizi komutları
Bwboundaries: binary modda bölgelerin sınırlarını belirler.
Bu örnekte, yeşil çizgiyle sınırlanmış alanların sayısını belirleyebiliriz. Bu örnekle daha sonra bahsedeceğimiz, morfolojik işlemler gerçekleştirilerek basit nesne sayma uygulaması yapılabilir.
I = imread('rice.png');
BW = im2bw(I, graythresh(I));
B = bwboundaries(BW);
figure; imshow(BW);
text(10,10,strcat('\color{red}bulunan sınırlar:',num2str(length(B))))
hold on;
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 1)
end
Edge: özel filtreler yardımıyla gri seviyedeki görüntülerin sınırları belirlenir.
I = imread('rice.png');
imshow(I);
BW1 = edge(I,'prewitt');
BW2 = edge(I,'canny');
figure; imshow(BW1);
figure; imshow(BW2);
diğer analiz komutları: hough, houghlines, corner…
Doku analizi komutları
entropy: gri seviye görüntünün entropisini hesaplar.
entropyfilt: yerel entropi hesaplar.
I=imread('circuit.tif');
e=entropy(I)
ye=entropyfilt(a);
imshow(ye,[])
rangefilt: görünütünün 3x3 komşuluğunda sınıflandırması yapar.
stdfilt: görüntünün 3x 3 komşuluğunda standart sapmasını hesaplar.
clear all, clc
I=imread('circuit.tif');
I1=rangefilt(I);
I2=stdfilt(I);
figure; imshow(I);
figure; imshow(I1);
figure; imshow(I2);
Aritmetik işlem komutları
imadd: iki görüntüyü toplar veya bir görüntüye sabit bir sayı (parlaklık) ekler.
imcomplement: binary modda siyah alanlar beyaz, beyaz alanlar siyaha çevrilir.
I = imread('rice.png');
J = imadd(I,50);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
lvl=graythresh(I);
BW=im2bw(I,lvl);
bw = imcomplement(BW);
figure;
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(bw);
diğer aritmetik işlemler: imabsdiff, imdivide, immultiply, imsubtract…
Görüntü iyileştirme komutları
imadjust: görüntü yoğunluğu değerini ve renk haritasını ayarlar.
histeq: histogramı eşitleyerek kontrastı artırır.
adapthisteq: CLAHE(kontrast sınırlı adaptif histogram eşitleme) algoritması kullanarak kontrastı artırır.
I = imread('tire.tif');
A = adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh');
B = histeq(I);
subplot(231),imshow(I);
subplot(232),imshow(A); title('adapthisteq uygulanmış');
subplot(233),imshow(B); title('histeq uygulanmış');
medfilt2: 2 boyutlu medyan filtreleme yapar.
wiener2: 2 boyutlu adaptif gürültü temizleme filtresidir.
I=imread('eight.tif');
no=imnoise(I,'salt & pepper',0.02);
filt1=medfilt2(no); filt2=wiener2(no);
subplot(2,2,1); imshow(I), title('Orijinal resim')
subplot(2,2,2); imshow(no), title('Gürültülü resim')
subplot(2,2,3); imshow(filt1), title('Medyan filtresi uygulanmış')
subplot(2,2,4); imshow(filt2), title('Wiener filtresı uygulanmış')
Doğrusal filtreleme komutları
fspecial: önceden tanımlanmış 2 boyutlu filtreleri oluşturur.
► Kullanım şekli; F = fspecial(‘filtre’ , parametre)
imfilter: çok boyutlu görüntüleri filtreler.
Morfolojik işlemler
strel: strel, morfolojik işlemlerde kullanılan yapısal filtre elemanıdır. Morfolojik işlemleri hangi şekil ve parametrelerle uygulayacağımızı strel ile belirleriz.
► Kullanım şekli; SE = strel (filtreleme şekli, parametre)
► Örnek; SE =strel(‘disk’, R) R; yarıçap
SE = strel(‘square’, L) L; karenin bir kenarının uzunluğu
imdilate: açma işlemini yapar.
imerode: aşındırma işlemi yapar.
bw = imread('rice.png');
lvl=graythresh(bw);
bw=im2bw(bw,lvl);
se = strel('line',11,70);
se1 = strel('square',8);
bw2 = imdilate(bw,se);
bw3 = imerode(bw,se1);
subplot(231), imshow(bw), title('Original')
subplot(232), imshow(bw2), title('Dilate sonucu')
subplot(233), imshow(bw3), title('erode sonucu')
► Örnekte; rice.png görüntüsü sonucun daha anlaşılır gözükmesi için binary moda çevrildi. İşlemler gri seviyede de yapılabilir. se ve se1 olarak iki tane maske belirlendi. Maskelerin parametreleri isteğe göre değiştirilebilir. Mesela; açma işleminin daha belirgin olması için se maskesinin parametreleri artırılmalı. se1 maskesinde 8 sayısı 12 yapıldığında beyaz noktaların tamamen kaybolduğu görülür.
imclose, imopen: imdilate ve imerode işlemlerinin birlikte kullanılması ile oluşan filtrelerdir. Uygulama mantıkları benzerdir.
imfill: gri seviyede veya binary modda açıklıkları doldurur.
bwarea: binary modda alan nesnelerin alanını hesaplar.
bwareaopen: binary modda küçük parçaları(bağlı olmayan) yok eder. aşındırma işleminin benzeridir.
bwconncomp: bağlı komponentleri buldurur.
BW = imread('text.png');
CC = bwconncomp(BW);
numPixels = cellfun(@numel,CC.PixelIdxList);
[biggest,idx] = max(numPixels);
BW(CC.PixelIdxList{idx}) = 0;
figure; imshow(BW);
► Örnekte; en büyük yer kaplayan harflerin sillindiği görülür.
bwmorph: binary modda morfolojik işlemler yapılır. Birçok maskeleme çeşidi vardır. Bu maskeleme çeşitlerinin bazılarını örnekte göreceğiz.
BW = imread('coins.png');
lvl=graythresh(BW);
BW=im2bw(BW,lvl);
BW2 = bwmorph(BW,'remove');
BW3 = bwmorph(BW,'skel',Inf);
BW4 = bwmorph(BW,'thin');
subplot(221),imshow(BW), title('original');
subplot(222),imshow(BW2), title('remove ');
subplot(223),imshow(BW3),title('skel'),
subplot(224),imshow(BW4),title('thin'),
► Askeri (hedef tanıma, izleme)
► Tıp (damar analizi, bilgisayarlı tomogrofi, ultrason)
► Güvenlik (nesne takibi, hareket algılama, yüz tanıma)
► Trafik (trafik kontrol, plaka tanıma, trafik ışığı (işareti) tanıma)
► Endüstri (nesne sayma, kalite kontrol, robotik uygulamalar)
► Tarımsal uygulamalar (ekin verimliliği tespiti)
► Astronomi (uydu görüntüleri ile hava tahmini)
► Jeodezi ve Fotogrametri (uzaktan algılama)
► Perakende (insan sayma, davranış analizi, mağaza izleme)
► Çevre güvenliği (çevre kirliliği tespiti)
Bu yazımızda yukarıdaki uygulamaları geliştirmek için kullanılan, Matlab’ın görüntü işleme komutlarının bazılarını örneklerle inceleyeceğiz. Yazının devamında örnek bir uygulama yapmaya çalışacağız.
imread: imread ile üzerinde çalışılmak istenilen fotoğraf bir değişkene atanarak matlab workspace için tanımlanır ve ardından imshow ile pencerede gösterilebilir. Workspace’te imgenin boyutu, çözünürlüğü gibi bilgileri görebilirsiniz.
İmtool: imtool ile bazı işlemlerin yapılabileceği bir pencere açılır.
Örnek kodları yazarken workspacedeki verileri temizlemek için, clear all ve clc komutlarını en başa yazmayı unutmayalım.
I = imread(‘ornek.jpg’)
imshow(I)
imtool(I)
Warp: görüntüyü (içinde yazı olan görüntü daha iyi olur ) belli yüzeylerde gösterir.
resim = imread('rice.png');
[x1,y1,z1] = cylinder;
[x2,y2,z2] = sphere;
imshow(resim); title('Orijinal resim');
figure
subplot(1,2,1); warp(x1,y1,z1,resim); title('cylinder');
subplot(1,2,2); warp(x2,y2,z2,resim); title('sphere');
Tür dönüşüm komutları
rgb2gray: renkli görüntüyü gri seviyeye çevirir.
hsv2rgb: hsv renkleri rgb renklere çevirir.
graythresh: graythreshold komutu görüntüdeki parlaklık eşiğini otomatik olarak belirler ve sonuç olarak 0 – 1 arasında bir sayı (level) oluşturur. Görüntüdeki parlaklık sınırları ile yapacağımız işlemlerde graythreshold’ tan elde ettiğimiz sayıyı kullanırız. Görüntü üzerinde belirli işlemleri yapabilmemiz için öncelikle gri seviyede çalışmamız gerekir.
Bunun için I= rgb2gray(I) komutu kullanılır. Bu kod örneği ile görüntünün binary şekli elde edilir.
level = graythresh(I);
bw = im2bw(I,level);
bw = bwareaopen(bw, 50);
figure; imshow(bw);
im2uint8: uint8 renk hassasiyetine dönüştürür. Genelde görüntüler uint8 türündedir. Her piksel İşaretsiz 8 bit (0 – 255) arası değere sahiptir.
Diğer dönüşüm komutları; demosaic, gray2ind, grayslice,im2int16, label2rgb ,im2double, im2uint16, mat2gray…
Uzamsal dönüşüm komutları
Kodların adlarından anlaşılacağı gibi fiziksel değişiklikler yapabileceğiniz bazı komutlar:imcrop, imresize, imrotate, imtransform…
Görüntü analizi komutları
Bwboundaries: binary modda bölgelerin sınırlarını belirler.
Bu örnekte, yeşil çizgiyle sınırlanmış alanların sayısını belirleyebiliriz. Bu örnekle daha sonra bahsedeceğimiz, morfolojik işlemler gerçekleştirilerek basit nesne sayma uygulaması yapılabilir.
I = imread('rice.png');
BW = im2bw(I, graythresh(I));
B = bwboundaries(BW);
figure; imshow(BW);
text(10,10,strcat('\color{red}bulunan sınırlar:',num2str(length(B))))
hold on;
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 1)
end
Edge: özel filtreler yardımıyla gri seviyedeki görüntülerin sınırları belirlenir.
I = imread('rice.png');
imshow(I);
BW1 = edge(I,'prewitt');
BW2 = edge(I,'canny');
figure; imshow(BW1);
figure; imshow(BW2);
diğer analiz komutları: hough, houghlines, corner…
Doku analizi komutları
entropy: gri seviye görüntünün entropisini hesaplar.
entropyfilt: yerel entropi hesaplar.
I=imread('circuit.tif');
e=entropy(I)
ye=entropyfilt(a);
imshow(ye,[])
rangefilt: görünütünün 3x3 komşuluğunda sınıflandırması yapar.
stdfilt: görüntünün 3x 3 komşuluğunda standart sapmasını hesaplar.
clear all, clc
I=imread('circuit.tif');
I1=rangefilt(I);
I2=stdfilt(I);
figure; imshow(I);
figure; imshow(I1);
figure; imshow(I2);
Aritmetik işlem komutları
imadd: iki görüntüyü toplar veya bir görüntüye sabit bir sayı (parlaklık) ekler.
imcomplement: binary modda siyah alanlar beyaz, beyaz alanlar siyaha çevrilir.
I = imread('rice.png');
J = imadd(I,50);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
lvl=graythresh(I);
BW=im2bw(I,lvl);
bw = imcomplement(BW);
figure;
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(bw);
diğer aritmetik işlemler: imabsdiff, imdivide, immultiply, imsubtract…
Görüntü iyileştirme komutları
imadjust: görüntü yoğunluğu değerini ve renk haritasını ayarlar.
histeq: histogramı eşitleyerek kontrastı artırır.
adapthisteq: CLAHE(kontrast sınırlı adaptif histogram eşitleme) algoritması kullanarak kontrastı artırır.
I = imread('tire.tif');
A = adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh');
B = histeq(I);
subplot(231),imshow(I);
subplot(232),imshow(A); title('adapthisteq uygulanmış');
subplot(233),imshow(B); title('histeq uygulanmış');
medfilt2: 2 boyutlu medyan filtreleme yapar.
wiener2: 2 boyutlu adaptif gürültü temizleme filtresidir.
I=imread('eight.tif');
no=imnoise(I,'salt & pepper',0.02);
filt1=medfilt2(no); filt2=wiener2(no);
subplot(2,2,1); imshow(I), title('Orijinal resim')
subplot(2,2,2); imshow(no), title('Gürültülü resim')
subplot(2,2,3); imshow(filt1), title('Medyan filtresi uygulanmış')
subplot(2,2,4); imshow(filt2), title('Wiener filtresı uygulanmış')
Doğrusal filtreleme komutları
fspecial: önceden tanımlanmış 2 boyutlu filtreleri oluşturur.
► Kullanım şekli; F = fspecial(‘filtre’ , parametre)
imfilter: çok boyutlu görüntüleri filtreler.
Morfolojik işlemler
strel: strel, morfolojik işlemlerde kullanılan yapısal filtre elemanıdır. Morfolojik işlemleri hangi şekil ve parametrelerle uygulayacağımızı strel ile belirleriz.
► Kullanım şekli; SE = strel (filtreleme şekli, parametre)
► Örnek; SE =strel(‘disk’, R) R; yarıçap
SE = strel(‘square’, L) L; karenin bir kenarının uzunluğu
imdilate: açma işlemini yapar.
imerode: aşındırma işlemi yapar.
bw = imread('rice.png');
lvl=graythresh(bw);
bw=im2bw(bw,lvl);
se = strel('line',11,70);
se1 = strel('square',8);
bw2 = imdilate(bw,se);
bw3 = imerode(bw,se1);
subplot(231), imshow(bw), title('Original')
subplot(232), imshow(bw2), title('Dilate sonucu')
subplot(233), imshow(bw3), title('erode sonucu')
► Örnekte; rice.png görüntüsü sonucun daha anlaşılır gözükmesi için binary moda çevrildi. İşlemler gri seviyede de yapılabilir. se ve se1 olarak iki tane maske belirlendi. Maskelerin parametreleri isteğe göre değiştirilebilir. Mesela; açma işleminin daha belirgin olması için se maskesinin parametreleri artırılmalı. se1 maskesinde 8 sayısı 12 yapıldığında beyaz noktaların tamamen kaybolduğu görülür.
imclose, imopen: imdilate ve imerode işlemlerinin birlikte kullanılması ile oluşan filtrelerdir. Uygulama mantıkları benzerdir.
imfill: gri seviyede veya binary modda açıklıkları doldurur.
bwarea: binary modda alan nesnelerin alanını hesaplar.
bwareaopen: binary modda küçük parçaları(bağlı olmayan) yok eder. aşındırma işleminin benzeridir.
bwconncomp: bağlı komponentleri buldurur.
BW = imread('text.png');
CC = bwconncomp(BW);
numPixels = cellfun(@numel,CC.PixelIdxList);
[biggest,idx] = max(numPixels);
BW(CC.PixelIdxList{idx}) = 0;
figure; imshow(BW);
► Örnekte; en büyük yer kaplayan harflerin sillindiği görülür.
bwmorph: binary modda morfolojik işlemler yapılır. Birçok maskeleme çeşidi vardır. Bu maskeleme çeşitlerinin bazılarını örnekte göreceğiz.
BW = imread('coins.png');
lvl=graythresh(BW);
BW=im2bw(BW,lvl);
BW2 = bwmorph(BW,'remove');
BW3 = bwmorph(BW,'skel',Inf);
BW4 = bwmorph(BW,'thin');
subplot(221),imshow(BW), title('original');
subplot(222),imshow(BW2), title('remove ');
subplot(223),imshow(BW3),title('skel'),
subplot(224),imshow(BW4),title('thin'),