Doç. Dr. GÜRAY SONUGÜR

Doç. Dr. Güray SONUGÜR – Öğrenci Bilgi Paylaşım Platformu

2022- Görüntü İşleme Dersi Nesne Tespit Kodları

Mavi renkli nesnelerin resim üzerinden tespit edilmesi

clear;close all;clc
a=imread(‘renkler2.png’);
r=a(:,:,1);%kırmızı bant ayrıldı
g=a(:,:,2);%yeşil bant ayrıldı
b=a(:,:,3);%mavi bant ayrıldı
gri=rgb2gray(a);%resim gri seviye yapıldı
mavi=imsubtract(b,gri); %kırmızı banttan gri seviye çıkarılarak sadece kırmızı olanlar bulunuyor.

BW_mavi=mavi>50;

[etiketlenmisGoruntu, nesneSayisi]=bwlabel(BW_mavi);
fprintf(‘İmgedeki kırmızı renkli nesne sayısı=%d\n’,nesneSayisi);

nesneler=regionprops(BW_mavi,’Centroid’,’Area’,’BoundingBox’);
tablo=regionprops(‘table’,BW_mavi,’Centroid’,’Area’,’BoundingBox’)
[alan,indeks]=max(tablo.Area);

if indeks>0

figure;
subplot(121),imshow(a);
subplot(122),imshow(BW_mavi);

for i=1:length(nesneler)
rectangle(‘Position’,nesneler(i).BoundingBox,’EdgeColor’,’r’,’LineWidth’,2);
hold on
plot(nesneler(i).Centroid(1),nesneler(i).Centroid(2),’b*’, ‘LineWidth’,2);
end

end

 

Daire şeklindeki nesnelerin tespit edilmesi:

clear;close all;clc
a=imread(‘renklerSekiller1.png’);
nesne=rgb2gray(a);%resim gri seviye yapıldı
nesne_BW=nesne<230;
figure, imshow(nesne);
[etiketlenmisGoruntu, nesneSayisi]=bwlabel(nesne_BW);
fprintf(‘İmgedeki nesne sayısı=%d\n’,nesneSayisi);

nesneler=regionprops(nesne_BW,’Centroid’,’Area’,’BoundingBox’,’Circularity’);
tablo=regionprops(‘table’,nesne_BW,’Centroid’,’Area’,’Circularity’)
[alan,indeks]=max(tablo.Circularity);

if indeks>0

nesneMerkezX=nesneler(indeks).Centroid(1);
nesneMerkezY=nesneler(indeks).Centroid(2);

figure;
% subplot(121),imshow(a);
% subplot(122),
imshow(nesne_BW);

rectangle(‘Position’,nesneler(indeks).BoundingBox,’EdgeColor’,’r’,’LineWidth’,2);
hold on
plot(nesneler(indeks).Centroid(1),nesneler(indeks).Centroid(2),’b*’, ‘LineWidth’,2);

end

 

Canlı video üzerinden kırmızı nesnelerin tespit edilmesi:

%% Setup
clear;clc;close all;
% 2. webcam’a bağlanılıyor.
cam = webcam(2);

for frames = 1:300
% tek bir çerçeve alıyoruz
a = snapshot(cam);
gri=rgb2gray(a);
red=a(:,:,1);
kirmizi=imsubtract(red,gri);
kirmizi=kirmizi>30;
kirmizi=bwareaopen(kirmizi,1000);
kirmizi = imfill(kirmizi, ‘holes’);
kirmizi = imclearborder(kirmizi);

[etiketlenmisGoruntu, nesneSayisi]=bwlabel(kirmizi);
fprintf(‘İmgedeki mavi renkli nesne sayısı=%d\n’,nesneSayisi);

nesneler=regionprops(kirmizi,’Centroid’,’Area’,’BoundingBox’);
tablo=regionprops(‘table’,kirmizi,’Centroid’,’Area’,’BoundingBox’)
[alan,indeks]=max(tablo.Area);

if indeks>0
resimmerkezX=round(size(a,2))/2;
resimmerkezY=round(size(a,1))/2;
nesneMerkezX=nesneler(indeks).Centroid(1);
nesneMerkezY=nesneler(indeks).Centroid(2);

figure(1);
% subplot(121), imshow(a);
% subplot(122),
imshow(a);

rectangle(‘Position’,nesneler(indeks).BoundingBox,’EdgeColor’,’r’,’LineWidth’,2);
hold on
plot(nesneMerkezX,nesneMerkezY,’b*’);
plot(resimmerkezX,resimmerkezY,’r+’);
plot([resimmerkezX nesneMerkezX] ,[resimmerkezY,nesneMerkezY],’y’,’LineWidth’,2);
end
end
clear cam