Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
在MATLAB中进行了Hough变换后,如何选择线条,以便可以在两个或多个图像之间进行比较?
我按照Amro给出的示例进行操作,实际上我想检测的是第一张图片中的两行。但是,我得到的是第二张图片。我怎样才能做到这一点? ![]() ![]() 回答: 我认为您的目标是检测图像中的线条,而不是比较两个图像(?)。 无论如何,以找到最大强度霍夫变换由所产生的矩阵hough功能,我们使用houghpeaks功能,并把它传递到峰值检测的所希望的数目。 编辑1: 我想我将添加一个示例来显示该过程: %# Load image, process it, find edges I = rgb2gray( imread('pillsetc.png') ); I = imcrop(I, [30 30 450 350]); J = imfilter(I, fspecial('gaussian', [17 17], 5), 'symmetric'); BW = edge(J, 'canny'); %# Perform Hough transform and show matrix [H,T,R] = hough(BW); imshow(imadjust(mat2gray(H)), [], 'XData',T, 'YData',R, ... 'InitialMagnification','fit') xlabel('\theta (degrees)'), ylabel('\rho') axis on, axis normal, hold on colormap(hot), colorbar %# Detect peaks P = houghpeaks(H, 4); plot(T(P(:,2)), R(P(:,1)), 'gs', 'LineWidth',2); %# Detect lines and overlay on top of image lines = houghlines(BW, T, R, P); figure, imshow(I), hold on for k = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1), xy(:,2), 'g.-', 'LineWidth',2); end hold off ![]() ![]() 编辑2: 在您进行了最近的更新之后,我仅通过对上述相同的代码进行了一些更改来设法检测到这些行:
![]() 更多&回答... |
![]() |
![]() |