对于一个分割目标,判断其明显的角的位置,我周围人都对这个题目很陌生,不知道去问谁,马上要答辩了,很着急,谁能帮我理解一下呢?谢谢了!

解决方案 »

  1.   

    可不可以这么理解。明显的角点,应该和最大值相关的。你看这个图片。
    不过角点的说法没有听到过,最好能跟你的导师问下到底什么意思
    http://p.blog.csdn.net/images/p_blog_csdn_net/jeff994/EntryImages/20081212/cornor.JPG
      

  2.   

    推荐你用opencv,它有角点检测的函数,给你2个函数说明看看把
                      GoodFeaturesToTrack
     
     
    GoodFeaturesToTrack
    确定图像的强角点 void cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image, CvArr* temp_image,
    CvPoint2D32f* corners, int* corner_count,
    double quality_level, double min_distance,
    const CvArr* mask=NULL );
    image 
    输入图像,8-位或浮点32-比特,单通道 
    eig_image 
    临时浮点32-位图像,尺寸与输入图像一致 
    temp_image 
    另外一个临时图像,格式与尺寸与 eig_image 一致 
    corners 
    输出参数,检测到的角点 
    corner_count 
    输出参数,检测到的角点数目 
    quality_level 
    最大最小特征值的乘法因子。定义可接受图像角点的最小质量因子。 
    min_distance 
    限制因子。得到的角点的最小距离。使用 Euclidian 距离 
    mask 
    ROI:感兴趣区域。函数在ROI中计算角点,如果 mask 为 NULL,则选择整个图像。 
    函数 cvGoodFeaturesToTrack 在图像中寻找具有大特征值的角点。该函数,首先用cvCornerMinEigenVal 计算输入图像的每一个象素点的最小特征值,并将结果存储到变量 eig_image 中。然后进行非最大值抑制(仅保留3x3邻域中的局部最大值)。下一步将最小特征值小于 quality_level?max(eig_image(x,y)) 排除掉。最后,函数确保所有发现的角点之间具有足够的距离,(最强的角点第一个保留,然后检查新的角点与已有角点之间的距离大于 min_distance )。 
     FindCornerSubPix
    精确角点位置 void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,
                             int count, CvSize win, CvSize zero_zone,
                             CvTermCriteria criteria );image 
    输入图像. 
    corners 
    输入角点的初始坐标,也存储精确的输出坐标 
    count 
    角点数目 
    win 
    搜索窗口的一半尺寸。如果 win=(5,5) 那么使用 5*2+1 × 5*2+1 = 11 × 11 大小的搜索窗口 
    zero_zone 
    死区的一半尺寸,死区为不对搜索区的中央位置做求和运算的区域。它是用来避免自相关矩阵出现的某些可能的奇异性。当值为 (-1,-1) 表示没有死区。 
    criteria 
    求角点的迭代过程的终止条件。即角点位置的确定,要么迭代数大于某个设定值,或者是精确度达到某个设定值。 criteria 可以是最大迭代数目,或者是设定的精确度,也可以是它们的组合。 
    函数 cvFindCornerSubPix 通过迭代来发现具有子象素精度的角点位置,或如图所示的放射鞍点(radial saddle points)。 
      

  3.   

    找到一个比较详细的理论介绍,楼主有兴趣可以去看下
    http://en.wikipedia.org/wiki/Corner_detection#The_SUSAN_corner_detector