脱毛算法开发

时间:2012-02-27 08:05:12

标签: algorithm matlab image-processing methods

作为我项目的预先要求,我必须从图像中去除皮肤毛发。为此,我找到了already existing program。实现在Matlab中完成。

以上链接引用以下内容

  1. 通过广义灰度形态学关闭操作来识别黑发位置,
  2. 它将头发像素的形状验证为细长结构,并通过双线性插值替换已验证的像素,
  3. 使用自适应中值滤波器平滑替换的头发像素。
  4. 至于提及generalized grayscale morphological closing operation的上述部分,我无法找出它的含义,也无法在Matlab中实现它

    目前我需要做的只是

    1. 识别头发像素
    2. 验证头发像素
    3. 用相邻皮肤像素替换头发像素
    4. 我想知道你是否可以建议任何可用于实现此算法的方法(边缘检测等),因为目前到目前为止所有尝试都没有正确解决。任何可以使用的matlab函数都会非常有用。还想知道我可以使用什么方法来验证像素是薄和长结构

      已更新:由于我不熟悉图像处理,因此我不知道如何识别头发像素使用哪些方法,验证它们并用相邻像素替换它们,因此请求指导

2 个答案:

答案 0 :(得分:3)

我将假设您了解灰度图像是什么以及对其进行操作。如果没有,请编辑您的问题以澄清。

Matlab图像处理工具箱包含imclose功能。维基百科上解释了Morphological closing。互联网充斥着有关的信息 图像处理的数学形态学

评论后

编辑

This page给出了图像处理的数学形态学的一般介绍。您要尝试做的一个观点是从图像中去除噪声,其中噪声表示为对浅色背景的长( - )暗(暗)元素 - 如果,即头发是黑色的皮肤很轻。这不是我看过的应用程序,所以我无法提供更多帮助。玩得开心。

答案 1 :(得分:0)

操作顺序为1.识别头发像素2.验证头发像素3.用相邻的皮肤像素替换头发像素。这主要是因为形态学开放滤波器是灰度或标量滤波器。 因此,彩色图像的问题可以通过找到一个好的色彩空间(通常在你的背景变化时很难),或者执行关闭(如上面的答案:如果头发是黑色的,背景很轻的话)在每个通道上进行滤波和插值来解决在其他方面,这是目前的解决方案。

因此,我们可以看一下matlab给出的内容,以检测细长的头发结构:

se1 = strel('line',10,90);
se2 = strel('line',10,180);
figure, imshow(imclose(imclose(I,se1),se2),[]) % this closing is done channel wise independently. 

对于复杂背景,需要良好的色彩空间功能。由于彩色图像是有序的(红色>绿色>蓝色,或某些此类订单 - 您可以验证这一点),这里或多或少的作品 Input image from the website Line filtered image

现在的问题是插入缺失值,因为结束会留下一些瑕疵。如Lee T,Ng V,Gallagher R,Coldman A,McLean D. DullRazor所建议的那样,可以使用插值中值滤波:从图像中去除毛发的软件方法。计算机在生物学和医学1997; 27:533-543。

另一个简单的想法是执行rgb2gray(I) - >使用线性结构的形态学闭合 - >将灰度图重新映射为RGB色调。如果背景颜色空间没有太大变化并且很稳健,那么映射回来很简单!