【问题标题】:detect a wrinkles on face in matlab?在matlab中检测面部皱纹?
【发布时间】:2014-03-01 03:30:10
【问题描述】:

我想知道一些关于Matlab中皱纹检测的知识:

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

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

我希望所有皱纹都为白色像素,图像的其余部分为黑色。

【问题讨论】:

  • '他们不是真正的边缘检测器',他们肯定是。霍夫变换对于检测直线和圆很有用,而不是分割特征。您能否更具体地说明您希望实现的目标?
  • 您是否还可以在您提出想法的地方添加图片,例如通过手动绘制红色,您要检测哪些线?你想检测额头上的大纹吗?例如,您想检测下巴和脸颊周围的小东西还是两者兼而有之?没有它就很难知道你所追求的准确性。
  • 感谢 jigg 我想要一个输出图像,它显示白线代替皱纹和其余黑色.......

标签: image matlab image-processing image-segmentation


【解决方案1】:

我从 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) 与其他图像处理策略相结合来进行一些改进。

【讨论】:

  • 亲爱的!这非常好,我认为它比我的输出结果要好得多。我不知道我是否可以问这个。但是你能告诉我在哪里可以找到这个代码吗?
  • 对不起,我添加了错误的链接,现在它已在答案中更新:mathworks.com/matlabcentral/fileexchange/… 谢谢。
  • 非常感谢。我会检查更多的案例,我希望它会给我一些更好的结果。
  • 请问我可以在python中有这个方法吗
【解决方案2】:

Matlab 有大量有趣的工具,您基本上可以组合使用这些工具来检测皱纹。这里有一些事情要看。 1)。研究阈值,看看它如何应用于您的情况(这将对您有很大帮助,因为皱纹和面部其他颜色之间存在对比)。

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

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

【讨论】:

  • 谢谢亲爱的!现在我将寻找分水岭算法。我希望它会帮助我.....
  • 对不起,没有一个步进器,你必须使用各种工具......我相信你知道
  • 非常感谢。我会检查更多的案例,我希望它会给我一些更好的结果。
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 2018-04-24
  • 2012-02-09
  • 2023-02-05
  • 2016-04-10
相关资源
最近更新 更多