2
我目前正在使用MATLAB進行「人羣數量估計」項目。對於那個項目,我需要在擁擠的圖像中找到頭部的數量(使用航空相機拍攝)。我目前使用循環霍夫變換來檢測圖像中的頭像。使用MATLAB檢測擁擠圖像中的頭
頭部尺寸因高度而異。所以,我編碼的方式是它接受(圖像,Min_head_size,Max_head_size)作爲參數。頭部大小將作爲圓的半徑(圓形霍夫變換),並檢測該半徑的圓。我已將閾值設置爲(pi *半徑)。
通過上述方法,我無法檢測到所有頭部。還有很多誤報。我可以這樣進行嗎?有沒有其他解決方案可以精確計算頭部?
function Crowd_counter(img,r1,r2)
img1 = imread(img); %read the image
img=im2bw(img1,graythresh(img1)); %convert into binary
imgBW = edge(img); %'canny' edge detection
count=0;
FDetect = vision.CascadeObjectDetector; %for face detection
BB = step(FDetect,img1); %bounding box for face detect
for i=r1:r2
[ydetect,xdetect,Accumulator] = houghcircle(imgBW,i,(i*pi)); %circular hough
y{count+1}=ydetect; %storing y co-ordinates
x{count+1}=xdetect; %storing x co-ordinates
count=count+1;
i=i+1;
end
disp(count);
figure;
imshow(img1); %for visualizing detected heads
hold on;
crowd=0;
for j=1:count
crowd=crowd+length(x{j}); %for counting detected heads
plot(x{j},y{j},'.','LineWidth',2,'Color','red');
j=j+1;
end
disp('Number of heads:');
disp(crowd);
disp('Number of faces:');
disp(size(BB,1));
disp('Total');
disp(crowd+size(BB,1));
Output from Crowd_counter('51.jpg',3,7)