在圖像處理中,用RGB三個(gè)分量(R:Red,G:Green,B:Blue),即紅、綠、藍(lán)三原色來表示真彩色,R分量,G分量,B分量的取值范圍均為0~255,比如電腦屏幕上的一個(gè)紅色的像素點(diǎn)的三個(gè)分量的值分別為:255,0,0。
像素點(diǎn)
像素點(diǎn)是最小的圖像單元,一張圖片由好多的像素點(diǎn)構(gòu)成,下圖是一張腿的圖片。
查看這張圖片的信息,尺寸是800 * 800 的,寬度是800像素,高度是800像素。也就是說這張圖片是由一個(gè)800 * 800的像素點(diǎn)矩陣構(gòu)成的(不理解矩陣是什么意思的話,可以把矩陣?yán)斫鉃?a href="http://www.nxhydt.com/v/tag/1743/" target="_blank">C語言中的二維數(shù)組),這個(gè)矩陣是800行,800列,像素是圖像的最小單元,這張圖片的寬度是800個(gè)像素點(diǎn)的長度,高度是800個(gè)像素點(diǎn)的長度,共有800 * 800 = 640000個(gè)像素點(diǎn)。
因?yàn)橐粋€(gè)像素點(diǎn)的顏色是由RGB三個(gè)值來表現(xiàn)的,所以一個(gè)像素點(diǎn)矩陣對(duì)應(yīng)三個(gè)顏色向量矩陣,分別是R矩陣,G矩陣,B矩陣,它們也都是800 *800大小的矩陣。下面展示這張圖片的一部分顏色矩陣數(shù)據(jù):
這個(gè)是R矩陣中的一部分
這個(gè)是G矩陣中的一部分
這個(gè)是B矩陣中的一部分
比如每個(gè)矩陣的第一行第一列的值分別為:R:240,G:223,B:204,所以這個(gè)像素點(diǎn)的顏色就是(240,223,204),三個(gè)矩陣的值不一定一 一對(duì)應(yīng),這樣做只是為了便于讀者理解。
圖像的灰度化
在理解了一張圖片是由一個(gè)像素點(diǎn)矩陣構(gòu)成之后,我們就知道我們對(duì)圖像的處理就是對(duì)這個(gè)像素點(diǎn)矩陣的操作,想要改變某個(gè)像素點(diǎn)的顏色,我們只要在這個(gè)像素點(diǎn)矩陣中找到這個(gè)像素點(diǎn)的位置,比如第x行,第y列,所以這個(gè)像素點(diǎn)在這個(gè)像素點(diǎn)矩陣中的位置就可以表示成(x,y),因?yàn)橐粋€(gè)像素點(diǎn)的顏色由紅、綠、藍(lán)三個(gè)顏色變量表示,所以我們通過給這三個(gè)變量賦值,來改變這個(gè)像素點(diǎn)的顏色,比如改成紅色(255,0,0),可以表示為(x,y,(R=255,G=0,B=0))。
那么什么叫圖片的灰度化呢?其實(shí)很簡單,就是讓像素點(diǎn)矩陣中的每一個(gè)像素點(diǎn)都滿足下面的關(guān)系:R=G=B(就是紅色變量的值,綠色變量的值,和藍(lán)色變量的值,這三個(gè)值相等,“=”的意思不是程序語言中的賦值,是數(shù)學(xué)中的相等),此時(shí)的這個(gè)值叫做灰度值。
灰度處理的方法:
一般灰度處理經(jīng)常使用兩種方法來進(jìn)行處理。
方法1:
灰度化后的R=(處理前的R + 處理前的G +處理前的B)/ 3
灰度化后的G=(處理前的R + 處理前的G +處理前的B)/ 3
灰度化后的B=(處理前的R + 處理前的G +處理前的B)/ 3
圖片經(jīng)過方法1進(jìn)行灰度化后的效果如下:
方法2:
灰度化后的R = 處理前的R * 0.3+ 處理前的G * 0.59 +處理前的B * 0.11
灰度化后的G = 處理前的R * 0.3+ 處理前的G * 0.59 +處理前的B * 0.11
灰度化后的B = 處理前的R * 0.3+ 處理前的G * 0.59 +處理前的B * 0.11
圖片經(jīng)過方法2進(jìn)行灰度化后的效果如下:
個(gè)人覺得第二種方法處理的效果比較好,第一種方法處理后的圖片有點(diǎn)模糊。
圖像的二值化
什么叫圖像的二值化?二值化就是讓圖像的像素點(diǎn)矩陣中的每個(gè)像素點(diǎn)的灰度值為0(黑色)或者255(白色),也就是讓整個(gè)圖像呈現(xiàn)只有黑和白的效果。在灰度化的圖像中灰度值的范圍為0~255,在二值化后的圖像中的灰度值范圍是0或者255。
黑色:
二值化后的R = 0
二值化后的G = 0
二值化后的B = 0
白色:
二值化后的R = 255
二值化后的G = 255
二值化后的B = 255
那么一個(gè)像素點(diǎn)在灰度化之后的灰度值怎么轉(zhuǎn)化為0或者255呢?比如灰度值為100,那么在二值化后到底是0還是255?這就涉及到取一個(gè)閥值的問題。
常用的二值化方法:
方法1:
取閥值為127(相當(dāng)于0~255的中數(shù),(0+255)/2=127),讓灰度值小于等于127的變?yōu)?(黑色),灰度值大于127的變?yōu)?55(白色),這樣做的好處是計(jì)算量小速度快,但是缺點(diǎn)也是很明顯的,因?yàn)檫@個(gè)閥值在不同的圖片中均為127,但是不同的圖片,他們的顏色分布差別很大,所以用127做閥值,白菜蘿卜一刀切,效果肯定是不好的。
方法2:
計(jì)算像素點(diǎn)矩陣中的所有像素點(diǎn)的灰度值的平均值avg
(像素點(diǎn)1灰度值+...+像素點(diǎn)n灰度值)/ n = 像素點(diǎn)平均值avg
然后讓每一個(gè)像素點(diǎn)與avg一 一比較,小于等于avg的像素點(diǎn)就為0(黑色),大于avg的 像素點(diǎn)為255(白色),這樣做比方法1好一些。
方法3:
使用直方圖方法(也叫雙峰法)來尋找二值化閥值,直方圖是圖像的重要特質(zhì)。直方圖方法認(rèn)為圖像由前景和背景組成,在灰度直方圖上,前景和背景都形成高峰,在雙峰之間的最低谷處就是閥值所在。取到閥值之后再一 一比較就可以了。
下面給出一張值化后的效果圖:(腿依稀可見。)
責(zé)任編輯:xj
原文標(biāo)題:圖像處理之灰度化和二值化
文章出處:【微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
圖像處理
+關(guān)注
關(guān)注
27文章
1281瀏覽量
56637 -
二值化
+關(guān)注
關(guān)注
0文章
13瀏覽量
4228
原文標(biāo)題:圖像處理之灰度化和二值化
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論