帧间差分法
帧间差分法是常见的目标识别算法,这里是matlab简单实现
% img1=imread('16_57_41.jpg');
% img2=imread('16_57_42.jpg');
img1=imread('C:\\Users\\lenovo\\Desktop\\pic\\12_26_13.jpg');
img2=imread('C:\\Users\\lenovo\\Desktop\\pic\\12_26_14.jpg');
% img1=rgb2gray(img1);
% img2=rgb2gray(img2);
imgdiff=abs(img1-img2);
imshow(imgdiff);
gthre = graythresh(imgdiff)/2;
% gthre = graythresh(a3);
BW1 = im2bw(imgdiff,gthre);
figure;imshow(BW1);
BW1 = bwareaopen(BW1,10);
figure,imshow(BW1);
L = bwlabel(BW1);%默认8连通; bwlabe(bw,4);
STATS = regionprops(L,'all');%STATS中含有所有连通域的properations
%在bw图像上绘制出连通域的矩形框
% figure;imshow(img1);
figure;imshow(img2);
obj_temp = 0;
for jj = 1 : size(STATS, 1)
if STATS(jj).Area > 10 %& STATS(jj).Extent > 0.08
boundary = STATS(jj).BoundingBox;
if boundary(end-1)>5 & boundary(end)>5 % & (abs(STATS(jj).Orientation)<10 | abs(STATS(jj).Orientation)>70)
rectangle('Position',boundary,'edgecolor','r' );
obj_temp = obj_temp+1;
end
end
end
% objnum(ii-1) = obj_temp;