1

我正在尝试在下图中做一个分割任务。

原图

我正在使用模糊 c 均值和一些最小的预处理。分割将有 3 类:背景(蓝色区域)、肉类(红色区域)和脂肪(白色区域)。背景分割效果很好。然而,照片左侧的肉和脂肪分割将大量肉组织映射为脂肪。最终的肉面膜是这样的:

面具

我怀疑这是因为光照条件使左侧更亮,因此算法将该区域分类为脂肪类。此外,我认为如果我能以某种方式使表面更光滑,可能会有一些改进。我使用了一个工作正常的 6x6 中值滤波器,但我愿意接受新的建议。任何建议如何克服这个问题?可能是某种平滑?谢谢 :)

编辑 1:脂肪区域大致标记在下图中。顶部区域是模棱两可的,但正如 rayryeng 在评论中提到的那样,如果它对我作为人类来说是模棱两可的,那么算法也可以对其进行错误分类。但左手部分显然都是肉,算法将其中很大一部分分配为脂肪。 粗脂肪段

4

2 回答 2

2

分割的第一条规则是“尝试描述你(作为一个人)是如何进行分割的”。一旦你这样做了,算法就会变得清晰。换句话说,您必须执行以下 2 项任务:

  1. 确定每个分段部分的独特特征(在您的情况下 - 脂肪和肉之间的区别是什么)。
  2. 选择最适合您的分类器(C-means、神经网络、SVM、决策树、Boosted 分类器等)。此分类器将对步骤 1 中选择的特征进行操作

您似乎跳过了第 1 步,这就是您的算法的问题。

以下是我的观察:

  1. 像素的亮度不区分肉和脂肪。它主要取决于照明、组织角度和镜面反射。所以你必须去掉亮度
  2. 看起来脂肪更“黄”了。换句话说,肉类的红色/绿色比率远高于脂肪。这就是我开始实施的功能。为了获得该功能,请将您的 RGB 图像转换为YUVHSV颜色空间。如果你使用 YUV 完全丢弃 Y 并在 V 平面上运行你的分类器。在 HSV 中,在 H 平面上运行它。这样,您将丢弃亮度并仅处理颜色(主要是红色和绿色分量)。我还建议使用这些颜色空间进行背景分离。
  3. 下一步 - 您应该向分类器添加更多功能,因为颜色还不够。另一个观察结果是,肉是一种更加柔韧的组织,因此它上面会有更多的皱纹,而脂肪往往更光滑。您可以搜索边并将绝对数量的边作为分类器的另一个特征插入。
  4. 继续观察你的结果,找出分类器出错的地方,并尝试提出其他新特征来更好地分离两个纹理。在您的情况下可能非常好的特征示例:HOG、图像金字塔上的 LBP、MCT 特征、三个补丁 lbp、(x,y)-projections。我的直觉告诉我,三补丁 lbp 对你的帮助最大,但我很难解释为什么。
  5. 个人建议:不知道Matlab实现了哪些功能。但是您应该从已经存在的功能开始,以节省编写大量新代码的时间。例如,我知道 HAAR 功能已经在 matlab 中实现,但它们本身可能不足以描述您的情况。结合几种类型的特征以获得最强的结果并避免使用重叠的特征(两个不同的特征在图像中捕获几乎相同的信息)。例如 - 如果您使用 MCT,请不要使用 LBP。

有关更多信息,您可以在此处阅读我关于纹理相似性的回答。你有一个相反的问题(而不是测量相似度,你想训练一个区分不相似纹理的分类器)。但是解决方案的框架是相同的。识别区分纹理的重要特征,将特征连接到向量并运行分类器。您可以在每个像素或小区域(例如 5x5 像素)的图像块上运行分类器。您期望的结果是训练出这样一个智能分类器,它可以告诉您图像中的每个补丁是否更像一块肉或脂肪

于 2015-06-08T08:12:52.707 回答
0

如果您没有输出标签,则需要应用无监督学习算法进行分类。对于许多图像,人眼并不是进行分类的完美工具。这就是我们使用计算机的原因:D 因为它可以向我们展示强度的分布并提供不同的类别。一种替代方法是使用连接组件来识别和分离 fat-meat 和 BG 类,因为它们具有完全不同的强度,除了均值和脂肪之间的边缘。

您可以看到我的基于阈值分割的不同参数的输出。请让我知道这是否是您想要的,以便我可以为您提供代码支持。最好的

参数集 1

参数集 2

于 2018-10-25T12:23:43.710 回答