MATLAB霍夫变换
时间: 2024-01-27 15:37:03 浏览: 28
在MATLAB中,你可以使用`hough`函数来执行霍夫变换。下面是一个简单的示例,展示如何在MATLAB中使用霍夫变换来检测图像中的直线。
```matlab
% 读取图像
img = imread('image.jpg');
% 将图像转换为灰度图
grayImg = rgb2gray(img);
% 执行霍夫变换来检测直线
[H, theta, rho] = hough(grayImg);
% 找出霍夫变换中的峰值,即检测到的直线
peaks = houghpeaks(H, 10); % 这里假设最多检测10条直线
% 绘制原始图像和检测到的直线
figure;
subplot(1, 2, 1);
imshow(img);
title('原始图像');
subplot(1, 2, 2);
imshow(grayImg);
hold on;
% 绘制检测到的直线
lines = houghlines(grayImg, theta, rho, peaks);
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1), xy(:,2), 'LineWidth', 2, 'Color', 'r');
end
title('检测到的直线');
hold off;
```
这个示例首先读取一张图像并将其转换为灰度图。然后,它使用`hough`函数执行霍夫变换并得到霍夫变换矩阵`H`、角度向量`theta`和距离向量`rho`。接下来,使用`houghpeaks`函数找到霍夫变换中的峰值,即检测到的直线。最后,使用`houghlines`函数根据峰值绘制检测到的直线。
你可以根据需要调整参数和绘制方式来适应不同的图像和应用场景。希望这个示例对你有所帮助!