• 【在凸多边形的图像中查找顶点】估计具有已知顶点数的像素化凸多边形角点研究(Matlab代码实现)


    💥💥💞💞欢迎来到本博客❤️❤️💥💥

    🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

    ⛳️座右铭:行百里者,半于九十。

    📋📋📋本文目录如下:🎁🎁🎁

    目录

    💥1 概述

    📚2 运行结果

    2.1 案例1——quad

    2.2 案例2——octagon

    2.3 案例3——spine

    🎉3 参考文献

    🌈4 Matlab代码实现


    💥1 概述

    本文将研究一种方法,该方法可以在像素化的凸多边形图像中查找顶点位置。这个方法将凸多边形的二进制图像作为输入,并输出估计的顶点位置(以最近的像素为单位)。这种方法的前提是我们已经知道凸多边形的顶点数。

    首先,为了实现这个方法,我们可以使用图像处理算法,例如边缘检测算法,来检测凸多边形的边缘。这将帮助我们识别凸多边形的边界,并进一步分割图像以便于分析。

    接下来,我们可以使用形态学运算,如腐蚀和膨胀,来清除图像中的噪声,并进一步增强边缘的连续性。这将有助于减少误差和提高顶点检测的准确性。

    然后,我们可以使用直线段检测算法,如霍夫变换,来检测图像中的直线段。由于凸多边形的边缘是由一系列直线段组成的,我们可以通过检测这些直线段并对其进行分析来推断凸多边形的顶点位置。

    在分析直线段时,我们可以应用几何形状的特性。例如,对于凸多边形而言,边缘的直线段将相交于顶点。通过检测这些相交点,我们可以得到估计的顶点位置。

    最后,为了提高结果的准确性,我们可以结合图像的空间信息和先验的顶点数来进一步筛选和优化顶点位置的估计。

    通过这个研究方法,我们可以实现在给定凸多边形的二进制图像的情况下,高效地估计顶点位置。这将对许多领域产生实际应用,如计算机视觉、图像处理和几何建模等。

    📚2 运行结果

    2.1 案例1——quad

    2.2 案例2——octagon

    2.3 案例3——spine

    部分代码:

    1. %A more advanced example which finds the "corners" of the vertebrae
    2. %of a spinal column. The vertebrae are not convex, but pgonCorners()
    3. %still works pretty well.
    4. load example3_spine
    5. [m,n]=size(BW);
    6. A=false(m,n);
    7. R=regionprops(BW,'PixelIdxList');
    8. Nv=numel(R); %number of vertebrae
    9. corners=cell(1,Nv);
    10. imshow(BW)
    11. for i=1:Nv
    12. B=A;
    13. B(R(i).PixelIdxList)=1;
    14. corners{i} = pgonCorners(B,4,40);
    15. hold on
    16. plot( corners{i}(:,2),corners{i}(:,1),'yo','MarkerFaceColor','r','MarkerSize',5);
    17. hold off
    18. end
    19. heights=cellfun(@(c) mean(c(:,1)),corners);
    20. [heights,idx]=sort(heights);
    21. corners=corners(idx);

    %A more advanced example which finds the "corners" of the vertebrae
    %of a spinal column. The vertebrae are not convex, but pgonCorners()
    %still works pretty well.

    load example3_spine


    [m,n]=size(BW);

    A=false(m,n);

    R=regionprops(BW,'PixelIdxList');
    Nv=numel(R); %number of vertebrae

    corners=cell(1,Nv);

    imshow(BW)


    for i=1:Nv
        
       B=A;
       B(R(i).PixelIdxList)=1;
       
       corners{i} = pgonCorners(B,4,40);
       
       hold on
       
       plot( corners{i}(:,2),corners{i}(:,1),'yo','MarkerFaceColor','r','MarkerSize',5);
       
       hold off

    end

    heights=cellfun(@(c) mean(c(:,1)),corners);

    [heights,idx]=sort(heights);
    corners=corners(idx);

    🎉3 参考文献

    文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

    [1]陈兆学,孟子渲,孟靖欣.基于凸多边形顶点检测的肝脏CT灌注图像肋骨和脊椎骨分割方法研究[J].上海理工大学学报, 2022, 44(1):4.

    [2]王秉中.凸多边形导体柱对TE平面波的散射的新高频近似解[J].Chinese Science Bulletin, 1988, 33(17):1357-1357.DOI:10.1360/csb1988-33-17-1357.

    [3]王秉中.凸多边形导体柱对TE平面波的散射的新高频近似解[J].科学通报, 1988(17):1357-1357.DOI:CNKI:SUN:KXTB.0.1988-17-024.

    🌈4 Matlab代码实现

  • 相关阅读:
    Hexo博客进阶:为 Next 主题的 Hexo 博客内容添加文章过期/时效提示
    Unity游戏框架搭建
    Navicat操作数据库与Mysql常见命令操作实战
    git和svn 的国内的下载地址
    14.ElasticSearch系列之分布式特性及分布式搜索机制(三)
    Javascript的事件循环机制
    生态系统服务——水源涵养水源涵养分布
    Vue+element开发Simple Admin后端管理系统页面
    Numpy入门[4]——数组类型
    Redis过期策略2020-架构师(六十三)
  • 原文地址:https://blog.csdn.net/Ke_Yan_She/article/details/133378472