A very late answer, but might help someone searching for this in google, since this question popped up as the first result for "best segmentation algorithm".
Fully convolutional networks seem to do exactly the task you're asking for. Check the paper in arXiv, and an implementation in MatConvNet.
The following image illustrates a segmentation example from these CNNs (the paper I linked actually proposes 3 different architectures, FCN-8s being the best).
Unfortunately, the best algorithm type for facial recognition uses wavelet reconstruction. This is not easy, and almost all current algorithms in use are proprietary. This is a late response, so maybe it's not useful to you but one suggestion would be to use the watershed algorithm. beforehand, you can use a generic drawing(black and white) of a face, generate a FFT of the drawing---call it *FFT_Face*. Now segment your image of a persons face using the watershed algorithm. Call the segmented image *Water_face*. now find the center of mass for each contour/segment. generate an FFT of *Water_Face*, and correlate it with the *FFT_Face image*. The brightest pixel in resulting image should be the center of the face. Now you can compute the distances between this point and the centers of segments generated earlier. The first few distances should be enough to distinguish one person from another.
I'm sure there are several improvements to the process, but the general idea should get you there.
发布评论
评论(4)
一个很晚的答案,但可能会帮助有人在谷歌中搜索这个问题,因为这个问题作为“最佳分割算法”的第一个结果出现。
全卷积网络似乎完全可以完成您所要求的任务。查看 arXiv 中的论文,以及 MatConvNet。
下图展示了这些 CNN 的分割示例(我链接的论文实际上提出了 3 种不同的架构,FCN-8 是最好的)。
A very late answer, but might help someone searching for this in google, since this question popped up as the first result for "best segmentation algorithm".
Fully convolutional networks seem to do exactly the task you're asking for. Check the paper in arXiv, and an implementation in MatConvNet.
The following image illustrates a segmentation example from these CNNs (the paper I linked actually proposes 3 different architectures, FCN-8s being the best).
不幸的是,面部识别的最佳算法类型使用小波重建。这并不容易,而且当前使用的几乎所有算法都是专有的。
这是一个较晚的回复,所以也许它对您没有用,但一个建议是使用分水岭算法。
事先,您可以使用脸部的通用绘图(黑白),生成绘图的 FFT——称之为 *FFT_Face*。
现在使用分水岭算法分割人脸图像。将分割后的图像称为*Water_face*。
现在找到每个轮廓/线段的质心。
生成 *Water_Face* 的 FFT,并将其与 *FFT_Face 图像* 相关联。结果图像中最亮的像素应该是脸部的中心。现在您可以计算该点与之前生成的线段中心之间的距离。最初的几个距离应该足以区分一个人和另一个人。
我确信该过程有一些改进,但总体思路应该可以帮助您实现这一目标。
Unfortunately, the best algorithm type for facial recognition uses wavelet reconstruction. This is not easy, and almost all current algorithms in use are proprietary.
This is a late response, so maybe it's not useful to you but one suggestion would be to use the watershed algorithm.
beforehand, you can use a generic drawing(black and white) of a face, generate a FFT of the drawing---call it *FFT_Face*.
Now segment your image of a persons face using the watershed algorithm. Call the segmented image *Water_face*.
now find the center of mass for each contour/segment.
generate an FFT of *Water_Face*, and correlate it with the *FFT_Face image*. The brightest pixel in resulting image should be the center of the face. Now you can compute the distances between this point and the centers of segments generated earlier. The first few distances should be enough to distinguish one person from another.
I'm sure there are several improvements to the process, but the general idea should get you there.
进行谷歌搜索发现了这篇论文:http://www.cse .iitb.ac.in/~sharat/papers/prim.pdf
似乎让它变得更好是一个难题,所以我认为你可能不得不满足于现有的东西。
Doing a Google search turned up this paper: http://www.cse.iitb.ac.in/~sharat/papers/prim.pdf
It seems that getting it any better is a hard problem, so I think you might have to settle for what's there.
你可以尝试分水岭分割算法
您还可以通过定性测量来计算分割算法的准确性
you can try the watershed segmentation algorithm
also you can calculate the accuracy of the segmentation algorithm by the qualitative measures