我正在使用一个正常工作的 Matlab 代码(原始代码来自这里),它使用 Hough trnsform 来检测圆形、方形和三角形等基本形状。下面是重要的代码段。
[H, theta,rho]=hough(S);
H 上方是霍夫变换矩阵,S 是形状的黑白图像。
for cnt = 1:max(max(H))
data(cnt) = sum(sum(H == cnt));
end
这里是形状检测部分。
[maxval,maxind] = max(data);
medval = median(data);
[p]=polyfit(1:maxind-5,data(1:maxind-5),2);
if maxval<3*medval
set(handles.txtResult,'string','Triangle');
elseif p(3)>100
set(handles.txtResult,'string','Square');
else
set(handles.txtResult,'string','Round');
end
我可以理解“数据”(存储霍夫矩阵强度频率)。我只是无法理解它用来检测形状的逻辑。maxval<3*medval
和p(3)>100