2

我正在使用一个正常工作的 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*medvalp(3)>100

4

0 回答 0