洪夢霞 梁少華
摘要:顏色分割可用于檢測身體腫瘤、從森林或海洋背景中提取野生動物的圖像,或者從單一的背景圖像中提取其他彩色物體,大數(shù)據(jù)時代背景下,顏色空間對于圖像分析仍然非常有用,通過在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
圖像分割是把圖像分成若干個特定的、具有獨特性質的區(qū)域并分割出感興趣區(qū)域的過程。它是從圖像處理到圖像分析的關鍵步驟。圖像分割是使用輪廓、邊界框等概念進行其他高級計算機視覺任務(例如對象分類和對象檢測)的基礎。圖像分割在濾波、變換、縮放等任務中,圖像分割具有重要的意義。
目前,關于彩色圖像分割方面的論文不是很多,2004年,葉齊祥[2]等人提出了一種融合顏色和空間信息的彩色圖像分割算法,根據(jù)顏色的粗糙度概念、圖像像素的相近性以及顏色和空間的區(qū)域距離實現(xiàn)彩色圖像分割的目的。2015年,李麗華[3]等人提出了一種基于視覺顯著性的彩色圖像分割方法,通過自適應閾值算法對視覺顯著目標進行分割,實現(xiàn)了更準確的圖像模型提取。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顏色模型的另一種說法是六角錐體模型,模型中顏色的參數(shù)分別是:色調(H),取值范圍為:0°~ 360°,模型中同樣存在三對互補色,分別是紅色0°和黃色60°、綠色120°和青色180°、藍色240°和紫色300°。飽和度(S),取值范圍為0%~100%。明度(V),取值范圍為0%(黑)到100%(白)。如圖2所示:
1.3 閾值分割
閾值分割是基于區(qū)域的圖像分割技術,基本原理是通過設定不同的閾值,把圖像像素點分為若干個種類。常用的特征包括:來自原始圖像的灰度或彩色特征;變換圖像中的灰度或彩色值得到的特征。
設原圖像為f(x,y),根據(jù)準則從f(x,y)中找到特征區(qū)間值T1和T2,將圖像分割,分割后的圖像g(x,y)為:
其中1顯示原始圖像的像素值,0表示像素為黑色,該算法的流程圖為圖3所示。
2 圖像分割實現(xiàn)
2.1 選取合適的顏色空間
在RGB顏色空間上可視化圖像,其過程如下,首先使用opencv的split()函數(shù)把圖像的顏色分割成紅綠藍三個分量通道,對應空間坐標的X,Y,Z軸;其次為了圖像中每個像素的真實顏色可以在3D模型中上色,使用matplotlib里的colors模塊的Normalize()函數(shù)以及tolist()函數(shù)將圖像中每個像素對應的顏色展平成一個列表并歸一化;最后使用axis的scatter()函數(shù)繪制散點圖,可視化圖像,原始圖像以及圖像可視化如圖4和圖5所示。
在HSV顏色空間上可視化圖像,首先使用opencv的cvtColor()函數(shù)把圖像從RGB顏色空間轉換為HSV顏色空間,其次把圖像的顏色分割成色調、飽和度和亮度三個分量通道,然后把圖像中每個像素對應的顏色展平成一個列表并歸一化,最后繪制散點圖進行可視化,如圖6所示。
可以看出在RGB顏色空間上圖像的橙黃色部分跨越了幾乎整個范圍的紅色、綠色和藍色值,由于圖像的一部分延伸到整個情節(jié),因此根據(jù)RGB值的范圍在RGB空間分割該圖像并不容易,而在HSV顏色空間上,該圖像的橙色更加本地化,視覺上也更加分離,這是可用于分段的關鍵點。所以HSV是按顏色分割圖像的一個很好的選擇。
2.2 閾值選取并分割圖像
由圖像在HSV顏色空間上的顯示可以根據(jù)一系列簡單的橙色來判斷分割圖像的閾值,這里選取的閾值空間為light_yellow = (1,190,200)、dark_yellow = (18,255,255)。制作所需顏色的小正方形圖像,并在Matplotlib中繪制,可以顯示所選閾值的顏色,但是由于matplotlib只解釋RGB中的顏色,所以需要使用matplotlib庫中的colors模塊中的hsv_to_rgb函數(shù)把HSV轉換為RGB,轉換后的顏色顯示如圖7所示。
使用該閾值分割后的圖像如圖8所示。
選取第二個閾值分割圖像中的白色區(qū)域,選取閾值的顏色顯示如圖9所示。
使用該閾值分割后的圖像如圖10所示。
把兩個閾值組合在一起,無論哪里有橙色或白色,都會產生1個值,分割圖像得到最終結果,如圖11所示。
3 結語
本文通過HSV顏色空間分割彩色圖片,實現(xiàn)了圖片和圖片背景的分離,但是也存在許多的不足。比如本文分割圖像的閾值是手動選取的,需要經過反復多次的實驗來選取最合適的閾值,工作比較繁雜冗余。目前由于沒有太多額外的時間來研究閾值的自動選取,希望在之后的不斷研究中對這個問題加以改善,此外本文是基于海洋中的魚的圖片來分割的,此種分割方法的應用場景還有許多,希望在以后的學習中可以廣泛實驗。
參考文獻:
[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.
【通聯(lián)編輯:代影】