彩色边缘
理论
目前,我们习惯了由亮度变化产生的边缘,亮度是由灰阶值来表示的。在现实问题中,需要进行边缘检测的场景中,这种边缘占据了大约90%,但不全是。
事实上,由于颜色的变化,或色相(Hue)的变化,并不总是能被这些边缘检测器检测出来。
如果边缘是对象的边缘,那么单独由颜色标记的边缘应该是能被检测出来,而且由于大部分图像是彩色的,因此在寻找边缘的时候考虑颜色是很重要的。
彩色边缘的检测有主要有两种方法。
方法一:一种方法是将已经讨论的这些边缘检测器应用于每一种颜色通道——红、绿、蓝——然后将这3个结果合并为一个1个结果。
方法二:另一种方法涉及了多维梯度,或偏导数。
方法一很直观,而且很容易实现。
常见的边缘检测方法可用于任何灰阶图像,而图像的红、绿和蓝色分量其实也是灰阶图,只要考虑8字节像素即可。
RGB方案
对于大部分视觉任务来说,RGB值不如一些其他色彩编码方案的原因在于,RGB值包含明显的强度比例。
每一个颜色分量都是那种颜色在整个像素中的强度,而强度则是其他边缘检测器识别的内容。
需要有一种更纯净的颜色表示方法,使得能够通过微分算子找到彩色边缘
新的值T1和T2方案
色相方案
一种更传统(也更困难)的计算方式是找出色相,即像素中的颜色分量的值。
色相是HSV色彩系统中的“H”,可以在很多地方找到对HSV的描述。
其基本思想在于:彩色像素由值(value,V,表示强度)、饱和度(saturation,S,表示色彩的量)以及色相(hue,H,表示色彩的性质)进行描述。
源码
包含RGB、T1和T2、HSV三种方案的边缘检测算法源码
https://github.com/ThranduilELFKING/study-openCV/tree/main/colorEdge
运行起来,示例图像:
RGB方案检查到的边缘:
T1和T2方案检查到的边缘:
HSV方案检查到的边缘: