專案場景:簡單matlab影像前景目標檢測
問題描述:
在我們平時看到的圖片當中,我們所關注的物體主要是圖片中前景的目標物體,所以對圖片中前景可能存在的目標進行檢測是有一定的應用,目標檢測的演算法很多,想要達到一個很高精度的前景目標檢測的演算法很復雜,對于一個小白(比如我)來說還是非常困難的,那么我就將就地簡單撰寫了一個圖片前景物體目標檢測的matlab程式,這個程式很簡短,思路也很簡單,首先就是用一個半徑為25的圓來跟圖片進行運算,提取出圖片的背景,然后用原圖減去背景,重復幾次來更加干凈地減去背景,最后對去背景的影像進行二值化處理,并標注二值化圖片的8連通域,最后選擇較大的連通域進行前景物體畫框標注,
由于程式簡單,面臨著很多問題,比如前景背景區分度不明顯的圖片,如圖片中物體過多,顏色多樣鮮明,就很難準確標注出前景目標,
img=imread('E:\DigitalImage\前景物體檢測\img\img3.jpg');
img1=img;
subplot(2,2,1);
imshow(img);
title('原圖');
[M N C]=size(img);
for i=1:10%多次回圈去除背景
background=imopen(img,strel('disk',25));
img=imsubtract(img,background);
end
subplot(2,2,2);
imshow(img);
title('去背景原圖');
img_gray=rgb2gray(img);%灰度化二值化去背景圖片
leve=graythresh(img_gray);
%leve=graythresh(imgabs);
bw=im2bw(img_gray,leve);
SE=ones(7,7);%腐蝕膨脹消除細微影響
for i=1:4
bw=imerode(bw,SE);
bw=bwmorph(bw,'dilate',9);
end
subplot(2,2,3);
imshow(bw);
title('處理后前景目標二值圖');
[L,num]=bwlabel(bw,8);%標注二值化圖片8連通域
STATS=regionprops(L,'basic');
subplot(2,2,4);
imshow(img1);
title('前景目標檢測');
for i=1:num%框出可能的前景物體
if (STATS(i).BoundingBox(3)>M/4||STATS(i).BoundingBox(4)>M/4||STATS(i).BoundingBox(3)>N/4||STATS(i).BoundingBox(4)>N/4)
rectangle('Position',STATS(i).BoundingBox,'EdgeColor',[1,0,0]);
end
end
實驗結果:




轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/186293.html
標籤:其他
上一篇:視頻面試跟傳統面試的區別及優點
