多语言展示
当前在线:920今日阅读:2今日分享:31

用Mathematica锁定脸谱的眼睛的大体位置的方法

给出两张卡通脸谱,如下面两幅图。这两幅图的特点是,黑色像素主要集中在眼球的位置上,且图形的宽度和高度都是500像素。本文的目标,是使用Mathematica来大体确定眼球在图片中的位置。
工具/原料
1

电脑

2

Mathematica

方法/步骤
1

先用下图做试验。

2

提取图片第一个通道的灰度图:dt = ImageData[img][[;; , ;; , 1]];

3

计算这个灰度图每一行的像素值的和:a = Total[#] & /@ dt;绘制折线图:ListLinePlot[{a // Reverse, c}\[Transpose]]其中,c = List[Range[500]][[1]];看下面的图像,越靠近左边,说明数值越少,也就是说,相应的行的像素值总和越少,黑色像素多。

4

计算这个灰度图每一列的像素值的和:b = Total[#] & /@ (dt\[Transpose]);绘制折线图:ListLinePlot[{c, b}\[Transpose]]

5

把这两个折线图画在一起:ListLinePlot[{{a // Reverse, c}\[Transpose], {c, b}\[Transpose]}]效果不好。

6

调整一下两个折线图,增加峰和谷的对比度。

7

下图就是调整之后的折线图。

8

把这个折线图放到原图上面。

9

可以看到,蓝色折线图谷底所在行,与绿色折线图谷底所在列,正是对应着脸谱的眼球的大体位置。

10

下面,是用另一幅图做试验的效果。

注意事项

剩下的问题,是怎么确定谷底所在的行数或列数。

推荐信息