《HALCON機器視覺與算法原理編程實踐》第7章 顏色與紋理-學習筆記

7.1 圖像的顏色

7.1.1 圖像的色彩空間

(1)RGB顏色空間
在這裏插入圖片描述
(2)灰度圖像
即單通道圖像,每個像素的灰度值爲0~255。
(3)HSV/HSI
在這裏插入圖片描述
HSV (色相hue, 飽和度saturation, 明度value), 也稱HSB (B指brightness) 是藝術家們常用的,因爲與加法減法混色的術語相比,使用色相,飽和度等概念描述色彩更自然直觀。HSV 是RGB色彩空間的一種變形,它的內容與色彩尺度與其出處——RGB色彩空間有密切聯繫。

HSL (色相hue, 飽和度saturation, 亮度lightness/luminance), 也稱HLS 或 HSI (I指intensity) 與 HSV非常相似,僅用亮度(lightness)替代了明度(brightness)。

7.1.2 Bayer圖像

參考鏈接:https://www.cnblogs.com/whw19818/p/6223143.html
bayer格式圖片是伊士曼·柯達公司科學家Bryce Bayer發明的,Bryce Bayer所發明的拜耳陣列被廣泛運用數字圖像。

對於彩色圖像,需要採集多種最基本的顏色,如rgb三種顏色,最簡單的方法就是用濾鏡的方法,紅色的濾鏡透過紅色的波長,綠色的濾鏡透過綠色的波長,藍色的濾鏡透過藍色的波長。如果要採集rgb三個基本色,則需要三塊濾鏡,這樣價格昂貴,且不好製造,因爲三塊濾鏡都必須保證每一個像素點都對齊。當用bayer格式的時候,很好的解決了這個問題。bayer 格式圖片在一塊濾鏡上設置的不同的顏色,通過分析人眼對顏色的感知發現,人眼對綠色比較敏感,所以一般bayer格式的圖片綠色格式的像素是是r和g像素的和。

另外,Bayer格式是相機內部的原始圖片, 一般後綴名爲.raw。很多軟件都可以查看, 比如PS。我們相機拍照下來存儲在存儲卡上的.jpeg或其它格式的圖片, 都是從.raw格式轉化過來的。如下圖,爲bayer色彩濾波陣列,由一半的G,1/4的R,1/4的B組成。
在這裏插入圖片描述

7.1.3 顏色空間的轉換

* 將一個RGB圖像轉換成任意的顏色空間
trans_from_rgb (BlueSubRedGreen, BlueSubRedGreen, BlueSubRedGreen, ImageResult1, ImageResult2, ImageResult3, 'hsv')
* 將三個任意顏色空間的3個通道圖像轉換爲RGB圖像
trans_to_rgb (ImageResult1, ImageResult1, ImageResult1, ImageRed, ImageGreen, ImageBlue, 'hsv')
* 創建一個顏色查找表
create_color_trans_lut ('hsv', 'from_rgb', 8, ColorTransLUTHandle)

7.2 顏色通道的處理

7.2.1 圖像的通道

圖像通道在RGB色彩模式下就是指在下就是指那單獨的紅色R、綠色G、藍色B部分。也就是說,一幅完整的圖像,是由紅色綠色藍色三個通道組成的。他們共同作用產生了完整的圖像。同樣在HSV色系中指的是色調H,飽和度S,亮度V三個通道。

7.2.2 訪問通道

* 讀取圖像
read_image (Image2, 'data/beads.jpg')
* 從Image2取出序號爲1的通道圖像,取名爲Red
access_channel (Image2, Red, 1)
* 獲取Image2圖像中通道的數量
count_channels (Image2, Channels)

7.2.3 通道分離與合併

* 讀取圖像
read_image (MultiChannelImage, 'data/beads.jpg')

* 通道分離
decompose3 (MultiChannelImage, R, G, B)
* 將多幅單通道圖像合併成一幅多通道圖像
compose3 (R, G, B, MultiChannelImage1)

* 通道分離爲數組
image_to_channels (MultiChannelImage, ImageArray)

* 將數組內的單通道圖像合併成一幅多通道圖像
channels_to_image (ImageArray, MultiChannelImage2)

7.2.4 處理RGB信息

read_image (Image, 'data/beads.jpg')
decompose3 (Image, Red, Green, Blue)
sub_image (Blue, Red, BlueSubRed, 1, 128)
sub_image (BlueSubRed, Green, BlueSubRedGreen, 1, 128)
threshold (BlueSubRedGreen, BlueRegion, 230, 255)

7.3 利用顏色信息提取背景相似的字符區域

read_image (Image, 'data/m105')
*將原始圖像進行通道分離,得到紅綠藍三個分量的圖像	
decompose3 (Image, Red, Green, Blue)
*將RGB三個分量的圖像轉化爲H(色調)、S(飽和度)、V(明度)的圖像
trans_from_rgb (Red, Green, Blue, ImageResultH, ImageResultS, ImageResultI, 'hsv')
*對飽和度圖像閾值處理,分割出高飽和度區域,即字符區域的大致範圍
threshold (ImageResultS, High, 192,255)
*區域分割,
reduce_domain (ImageResultH, High, ImageReduced)
*並進行膨脹操作
dilation_circle (ImageReduced, RegionDilation, 3.5)
*開運算,使邊緣更清晰
opening_circle (RegionDilation, RegionChars, 5.5)
dev_clear_window ()
dev_display (RegionChars)

7.4 紋理分析

read_image(Image, 'data/cloth')
*將圖像分解成RGB三個通道
decompose3 (Image, Image1, Image2, Image3)
*將RGB三個通道的圖像,轉化爲HSV圖像空間
trans_from_rgb (Image1, Image2, Image3, ImageResult1, ImageResult2, ImageResult3, 'hsv')
*進行紋理檢測。
*其中選擇的濾波器類型是‘ls’,即行方向用‘level’,列方向用‘spot’進行檢測。
*這種濾波器類型適合檢測垂直方向上的缺陷。
texture_laws (ImageResult2, ImageTextureLS, 'ls', 2, 7) 
*對濾波器處理後的圖像進行均值化,使圖像更平滑,缺陷區域明顯
mean_image (ImageTextureLS, ImageMean, 11, 11)
*對檢測出的缺陷區域進行形態學處理並顯示出來
threshold (ImageMean, Regions, 60, 255)
*將符合條件的區域分隔成獨立區域
connection(Regions, ConnectedRegions)
*計算各區域的面積,提取出面積最大的區域
area_center (ConnectedRegions, Area, Row, Column)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', max(Area), 99999) 
*做閉運算,提取出缺陷區域
closing_circle(SelectedRegions, RegionClosing, 11.5)
dev_clear_window ()
dev_display (RegionClosing)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章