怎么用Mathematica来检测图片的特征点?

2025-10-23 04:53:35

1、准备一张图片。

怎么用Mathematica来检测图片的特征点?

2、检测图片的特征点:

a = ImageKeypoints[img]

a里面是特征点在图像中的坐标。

怎么用Mathematica来检测图片的特征点?

3、把所有的特征点在图像里面显示出来:

b = HighlightImage[img, {Yellow, PointSize[0.01], a}]

怎么用Mathematica来检测图片的特征点?

4、指定关键点的阈值,可以适当的去掉那些不重要的特征点:

HighlightImage[img, {Yellow, PointSize[0.01], 

  ImageKeypoints[img, KeypointStrength -> .001]}]

怎么用Mathematica来检测图片的特征点?

5、试验表明,KeypointStrength后面的数值越小,关键点越多。

c = Table[

  Length[ImageKeypoints[img, KeypointStrength -> 2.^(-n)]], {n, 1, 30,1}]

ListLinePlot[c]

但是,关键点的数目有最小值和最大值。

怎么用Mathematica来检测图片的特征点?

6、只检测背景里的特征点:

HighlightImage[img, {Yellow, PointSize[0.01], 

  ImageKeypoints[img, Masking -> d]}]

怎么用Mathematica来检测图片的特征点?

7、其中,d是蒙板,用来粗略的分离前景和背景:

d = RemoveBackground[img] // Binarize[#, 0.1] & // Erosion[#, 6] &

怎么用Mathematica来检测图片的特征点?

8、在原图中,可以大体标注出背景和前景:

HighlightImage[img, {Blue, d}]

怎么用Mathematica来检测图片的特征点?

9、第六步检测到的特征点,也确实位于背景范围内:

HighlightImage[img, {Blue, d, Yellow, PointSize[0.01], 

  ImageKeypoints[img, Masking -> d]}]

怎么用Mathematica来检测图片的特征点?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢