基于RGB颜色空间的彩色图像分割

2020-01-26 05:49洪梦霞梁少华
电脑知识与技术 2020年34期

洪梦霞 梁少华

摘要:颜色分割可用于检测身体肿瘤、从森林或海洋背景中提取野生动物的图像,或者从单一的背景图像中提取其他彩色物体,大数据时代背景下,颜色空间对于图像分析仍然非常有用,通过在RGB和HSV颜色空间可视化图像,可以看到图像颜色分布的散点图。通过阈值分割,确定要提取的所有像素的阈值,在所有像素中获取期望的像素,得到分割后的图像。实验结果分析,使用OpenCV基于Python中的颜色从图像中分割对象,可以达到简单、快速、可靠的目的。

关键词:颜色空间;颜色分割;阈值分割

中图分类号:TP3        文献标识码:A

文章编号:1009-3044(2020)34-0225-03

Abstract: Color segmentation can be used to detect body tumors, extract wildlife images from forest or marine background, or extract other color objects from a single background image. In the background of big data era, color space is still very useful for image analysis. By visualizing images in RGB and HSV color spaces, we can see the scatter map of image color distribution. Through threshold segmentation, the threshold of all the pixels to be extracted is determined, and the desired pixels are obtained from all pixels to obtain the segmented image. Experimental results show that using OpenCV to segment objects from images based on Python color can achieve the purpose of simple, fast and reliable.

Key words: color space; color segmentation; threshold segmentation

圖像分割是把图像分成若干个特定的、具有独特性质的区域并分割出感兴趣区域的过程。它是从图像处理到图像分析的关键步骤。图像分割是使用轮廓、边界框等概念进行其他高级计算机视觉任务(例如对象分类和对象检测)的基础。图像分割在滤波、变换、缩放等任务中,图像分割具有重要的意义。

目前,关于彩色图像分割方面的论文不是很多,2004年,叶齐祥[2]等人提出了一种融合颜色和空间信息的彩色图像分割算法,根据颜色的粗糙度概念、图像像素的相近性以及颜色和空间的区域距离实现彩色图像分割的目的。2015年,李丽华[3]等人提出了一种基于视觉显著性的彩色图像分割方法,通过自适应阈值算法对视觉显著目标进行分割,实现了更准确的图像模型提取。2016年,莫玲[4]研究了基于RGB彩色空间的图像分割的方法,基于遗传算法改进了最大熵分割方法,在分割图像方面具有很好的灵活性。

1 相关技术

1.1 RGB颜色空间

RGB颜色空间的另一个名字是三基色模式,基于Red红色,Green绿色,Blue蓝色为基础,对色彩进行各种叠加,产生丰富绚丽的颜色。

RGB颜色空间中,颜色是由一个单位长度的立方体来表示的,立方体的8个顶点代表了8种常见颜色,分别是黑蓝绿青红紫黄白,立方体坐标系的原点代表了黑色,直角坐标系的3根坐标轴上是红绿蓝三种颜色,如图1所示。这些颜色中存在三对互补色,分别是红色和青色、紫色和绿色、黄色和蓝色。三基色的取值范围为R:0-255;G:0-255;B:0-255,值除以255后可以归一到0-1之间。

1.2 HSV颜色空间

HSV颜色模型的另一种说法是六角锥体模型,模型中颜色的参数分别是:色调(H),取值范围为:0°~ 360°,模型中同样存在三对互补色,分别是红色0°和黄色60°、绿色120°和青色180°、蓝色240°和紫色300°。饱和度(S),取值范围为0%~100%。明度(V),取值范围为0%(黑)到100%(白)。如图2所示:

1.3 阈值分割

阈值分割是基于区域的图像分割技术,基本原理是通过设定不同的阈值,把图像像素点分为若干个种类。常用的特征包括:来自原始图像的灰度或彩色特征;变换图像中的灰度或彩色值得到的特征。

设原图像为f(x,y),根据准则从f(x,y)中找到特征区间值T1和T2,将图像分割,分割后的图像g(x,y)为:

其中1显示原始图像的像素值,0表示像素为黑色,该算法的流程图为图3所示。

2 图像分割实现

2.1 选取合适的颜色空间

在RGB颜色空间上可视化图像,其过程如下,首先使用opencv的split()函数把图像的颜色分割成红绿蓝三个分量通道,对应空间坐标的X,Y,Z轴;其次为了图像中每个像素的真实颜色可以在3D模型中上色,使用matplotlib里的colors模块的Normalize()函数以及tolist()函数将图像中每个像素对应的颜色展平成一个列表并归一化;最后使用axis的scatter()函数绘制散点图,可视化图像,原始图像以及图像可视化如图4和图5所示。

在HSV颜色空间上可视化图像,首先使用opencv的cvtColor()函数把图像从RGB颜色空间转换为HSV颜色空间,其次把图像的顏色分割成色调、饱和度和亮度三个分量通道,然后把图像中每个像素对应的颜色展平成一个列表并归一化,最后绘制散点图进行可视化,如图6所示。

可以看出在RGB颜色空间上图像的橙黄色部分跨越了几乎整个范围的红色、绿色和蓝色值,由于图像的一部分延伸到整个情节,因此根据RGB值的范围在RGB空间分割该图像并不容易,而在HSV颜色空间上,该图像的橙色更加本地化,视觉上也更加分离,这是可用于分段的关键点。所以HSV是按颜色分割图像的一个很好的选择。

2.2 阈值选取并分割图像

由图像在HSV颜色空间上的显示可以根据一系列简单的橙色来判断分割图像的阈值,这里选取的阈值空间为light_yellow = (1,190,200)、dark_yellow = (18,255,255)。制作所需颜色的小正方形图像,并在Matplotlib中绘制,可以显示所选阈值的颜色,但是由于matplotlib只解释RGB中的颜色,所以需要使用matplotlib库中的colors模块中的hsv_to_rgb函数把HSV转换为RGB,转换后的颜色显示如图7所示。

使用该阈值分割后的图像如图8所示。

选取第二个阈值分割图像中的白色区域,选取阈值的颜色显示如图9所示。

使用该阈值分割后的图像如图10所示。

把两个阈值组合在一起,无论哪里有橙色或白色,都会产生1个值,分割图像得到最终结果,如图11所示。

3 结语

本文通过HSV颜色空间分割彩色图片,实现了图片和图片背景的分离,但是也存在许多的不足。比如本文分割图像的阈值是手动选取的,需要经过反复多次的实验来选取最合适的阈值,工作比较繁杂冗余。目前由于没有太多额外的时间来研究阈值的自动选取,希望在之后的不断研究中对这个问题加以改善,此外本文是基于海洋中的鱼的图片来分割的,此种分割方法的应用场景还有许多,希望在以后的学习中可以广泛实验。

参考文献:

[1] 王秋萍,张志祥,朱旭芳.图像分割方法综述[J].信息记录材料,2019,20(7):12-14.

[2] 叶齐祥,高文,王伟强,等.一种融合颜色和空间信息的彩色图像分割算法[J].软件学报,2004,15(4):522-530.

[3] 李丽华,汪凤麟,陈灵娜,等.基于视觉显著性的彩色图像分割[J].南华大学学报(自然科学版),2015,29(3):73-77.

[4] 莫玲.基于RGB彩色空间的图像分割研究[J].计算机科学,2016,43(S1):168-170.

[5] 李伟斌,马洪林,易贤,等.基于色彩空间变换的彩色图像分割方法[J].计算机工程与应用,2019,55(9):162-167.

[6] 张红霞,章银娥.基于Lab空间的K均值聚类彩色图像分割方法[J].赣南师范大学学报,2019,40(6):44-48.

[7] Yamini B,Sabitha R.Image steganalysis:adaptive color image segmentation using otsu's method[J].Journal of Computational and Theoretical Nanoscience,2017,14(9):4502-4507.

[8] Raja R,Kumar S,Mahmood M R.Color object detection based image retrieval using ROI segmentation with multi-feature method[J].Wireless Personal Communications,2020,112(1):169-192.

【通联编辑:代影】