在matlab中检测脸上的皱纹?

时间:2014-02-28 17:00:00

标签: image matlab image-processing image-segmentation

我想了解一下Matlab中的皱纹检测:

here is an example image

我想过使用霍夫变换,但它无法解决这个问题。有什么想法我可以进一步处理吗? 我甚至想过使用sobe,canny和其他边缘探测器。但是当我阅读他们的文档时,他们并不是真正的边缘检测器。

close all
clear all
clc
Image = imread('imagename.jpg');
GrayImage = rgb2gray(Image);
FiltImage = edge(GrayImage ,'sobel');
imshow(FiltImage)

我希望所有皱纹都是白色像素,其余图像都是黑色。

2 个答案:

答案 0 :(得分:5)

我从Frangi等人的论文Hessian-based Multiscale Vessel Enhancement Filtering中借用了血管检测中使用的方法。有一个Matlab实现,FrangiFilter2D,适用于2D血管图像。我试着将它应用于皱纹检测。

options = struct('FrangiScaleRange', [5 5], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 1,...
           'FrangiBetaTwo', 500, 'verbose',true,'BlackWhite',true);
[outIm,whatScale,Direction] = FrangiFilter2D(double(GrayImage), options);
imshow(uint8(outIm/max(outIm(:))*256))

它看起来比纯边缘提取更好,但需要通过(i)调整参数以及(ii)与其他图像处理策略相结合来进行一些改进。

enter image description here

答案 1 :(得分:0)

Matlab有许多有趣的工具,您可以将它们组合起来,以检测皱纹。以下是一些需要注意的事项。 1)。研究阈值,看看它如何适用于你的情况(这将有助于你很多,因为皱纹和脸部颜色的其余部分之间存在对比)。

2)。请记住,您可以添加和减去图像。

3)。如果你喜欢冒险,研究分水岭算法。