当前位置:   article > 正文

【图像处理】Matlab图像边缘检测与直线提取_matlab检测直线

matlab检测直线

1、问题描述:        

        使用Matlab图像边缘检测和直线提取。通过选取感兴趣区域,用户可以选择需要处理的图像部分。随后,对选取的区域进行亮度调整、直方图均衡化和自适应直方图均衡化等预处理操作,以增强图像的细节和对比度。

         然后,将预处理后的图像转换为灰度图像,并使用Sobel算子进行边缘检测。最后,利用霍夫变换方法从边缘图像中提取直线信息,并将检测到的直线绘制在原图像上,以帮助用户分析图像中的线条结构。

2、图片素材:

       

 3、Matlab代码:

  1. % 清空命令窗口和工作区变量
  2. clear;
  3. clc;
  4. % 读取图片
  5. src = imread('0.jpg');
  6. % 获取图像的大小信息
  7. [m, n, z] = size(src);
  8. % 显示原图像
  9. figure(1)
  10. imshow(src)
  11. % 选取感兴趣区域
  12. h=imrect;
  13. % 获取选取区域的位置信息
  14. pos=getPosition(h);
  15. % 拷贝选取图片
  16. imCp = imcrop( src, pos );
  17. % 在新的窗口显示选取的图片
  18. figure(2)
  19. imshow(imCp);
  20. % 将 RGB 图像转换成 LAB 颜色空间
  21. shadow_lab = rgb2lab(imCp);
  22. % 对亮度进行调整
  23. max_luminosity = 100;
  24. L = shadow_lab(:,:,1)/max_luminosity;
  25. shadow_imadjust = shadow_lab;
  26. shadow_imadjust(:,:,1) = imadjust(L)*max_luminosity;
  27. shadow_imadjust = lab2rgb(shadow_imadjust);
  28. % 对亮度进行直方图均衡化
  29. shadow_histeq = shadow_lab;
  30. shadow_histeq(:,:,1) = histeq(L)*max_luminosity;
  31. shadow_histeq = lab2rgb(shadow_histeq);
  32. % 对亮度进行自适应直方图均衡化
  33. shadow_adapthisteq = shadow_lab;
  34. shadow_adapthisteq(:,:,1) = adapthisteq(L)*max_luminosity;
  35. shadow_adapthisteq = lab2rgb(shadow_adapthisteq);
  36. % 将选取的图片转换为灰度图像
  37. im=rgb2gray(shadow_adapthisteq);
  38. % im=imadjust(imCp);
  39. imshow(im)
  40. % 对灰度图像进行边缘检测
  41. Ibw=edge(im,'Sobel',0.05);
  42. figure
  43. imshow(Ibw,[])
  44. % 对边缘图像进行霍夫变换,获取直线信息
  45. [H,theta,rho]=hough(Ibw,'ThetaResolution',0.2);
  46. peaks=houghpeaks(H,100);
  47. lines=houghlines(im,theta,rho,peaks);
  48. % 在图片上绘制检测到的直线
  49. figure
  50. imshow(im)
  51. hold on
  52. for k=1:length(lines)
  53. xy=[lines(k).point1;lines(k).point2];
  54. plot(xy(:,1),xy(:,2))
  55. end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/846179
推荐阅读
相关标签
  

闽ICP备14008679号