寻找身体的肩部和颈部

时间:2016-08-24 11:58:25

标签: linux image-processing imagemagick edge-detection

我需要找到图像的肩点(人体)需要帮助如何识别坐标,我能够使用imagemagick获得人体的边缘,但难以找到肩部A,B和颈部C点。

原始图片 Original Image

获得边缘后的图像 Image after getting edges

2 个答案:

答案 0 :(得分:0)

从上到下逐行扫描边缘图像。对于每一行,计算第一个边缘像素与最后一个像素之间的长度。

这一行你的长度有一个很大的变化是C点。

在找到C点之后,当斜率变化非常剧烈时,当您遇到具有肩点的行时,长度开始以线性方式上升,斜率为m。您可能需要为每一侧单独计算此斜率。

答案 1 :(得分:0)

尝试使用Image Magick形态学方法处理输入图像。详细示例为here。下面的脚本将缩小图像并将图像阈值设置为2bpp位图,然后它将尝试关闭所有间隙,并围绕形状。然后创建一个骨架,其中包含有关我们形状的一般信息。最后使用命中和未命中内核搜索特定的行结尾。在这种情况下对角线的。输出是带有一组点的图像。但是,您可以使用Image Magick的identify打印像素位置。我还假设你或多或少知道肩膀在哪里,并且可以丢弃图像其他部分的点。识别颈部的C点可以从A和B外推。

convert -resize 25% input.jpg -negate -normalize -colorspace gray -threshold 20% -trim +dither v.png
convert v.png -morphology Close Disk x.png 
convert x.png -morphology Thinning:-1 Skeleton:2 y.png 
convert y.png -morphology HMT 'LineEnds:2;LineEnds:2>>' z.png

enter image description here

我使用了IM v.6.7.9,因为我对v7有一些问题。