gpt4 book ai didi

matlab - 过滤霍夫变换以仅在Matlab中查找水平线和垂直线

转载 作者:行者123 更新时间:2023-12-02 04:45:25 24 4
gpt4 key购买 nike

我正在尝试编写一些代码来查找图像中的线条并在找到的线条上绘制一条红线。我已经设法使用霍夫变换来做到这一点,但我的问题是我需要它只找到水平和垂直线,并忽略所有其他斜率的线。

我认为我可以通过找到代码找到的线的斜率来解决这个问题,并且使用 if 语句仅在水平和垂直线上显示红线,但我无法弄清楚如何提取 x和我找到的点的 y 值。

有人对如何解决这个问题有任何建议吗?

下面是我的代码:

function findlineshv(I)

% Read Image
img = imread(I);

% Convert to black and white because
% edge function only works with BW imgs
bwImage = rgb2gray(img);

% figure(1),imshow(bwImage);

% find edges using edge function
b=edge(bwImage,'sobel');

% show edges
% figure(1),imshow(b);


% compute the Hough transform of the edges found
% by the edge function
[hou,theta,rho] = hough(b);

% define peaks, x and y
peaks = houghpeaks(hou,5,'threshold',ceil(0.3*max(hou(:))));

x = theta(peaks(:,2));
y = rho(peaks(:,1));


lines = houghlines(bwImage,theta,rho,peaks,'FillGap',5,'MinLength',7);

figure, imshow(bwImage), hold on

for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',3,'Color','red');
end

最佳答案

您只需在霍夫函数中设置所需的 theta 值即可实现此目的。

start_angle = 80;
end_angle = 100;
theta_resolution = 0.5:

[H,T,R] = hough(b, 'Theta', start_angle:theta_resolution:end_angle);

关于matlab - 过滤霍夫变换以仅在Matlab中查找水平线和垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com