我正在寻找算法 (C#) 或有关如何检测图像上某些对象边缘的一些信息(目标是黑色素瘤)。我找到了 AForge.NET
库,但我需要在不丢失图像颜色的情况下检测边缘
。下面的示例是使用 Paint.NET
之前:
之后
我只需要那个蓝色边缘(里面的颜色无关紧要)或那个蓝色像素坐标
编辑
Matthew Chambers是的,将图像转换为灰度可以提高算法的有效性。 第一个结果图像基于原始彩色图像,第二个结果图像基于灰度图像。蓝色像素对应的是HSV的Value < 30,大家可以自己看区别。谢谢 m8!
最佳答案
您需要考虑与您要解决的问题相关的几点。
什么是图片中的边缘?一般是颜色变化速度快的时候。 IE。在短时间内从黑暗到光明。
但这有一个问题,即颜色的高变化率实际上是多少。例如,红色和绿色值可以保持不变,而蓝色值以高速率变化。我们会把它算作优势吗? RGB 值的任意组合都可能发生这种情况。
出于这个原因,图像通常会转换为灰度以进行边缘检测 - 否则您可能会针对每个 RGB 值获得不同的边缘结果。
因此,最简单的方法是使用适用于灰度图像的典型边缘检测算法,然后将结果叠加到原始图像上。
关于c# - 一种不失色的边缘检测算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8772999/