影像處理(二) Visual C++ Clr 彩色圖片轉灰階– s12121296 | 影像處理灰階
我們在做影像處理時,會將一張彩色的圖中的一個像素點以RGB來表示,RGB每個顏色各佔8個bit,總共24bit。也稱作三通道影像。而一張灰階的圖只需要用一個通道也就是8bit來表示,如果我們要將一張RGB色彩的圖轉換成灰階時,以較直覺簡單的方法來做的話就是將RGB三個數值相加除以三,就能夠得到我們要的結果。不過實際上人眼對於三種色彩的亮度感受都不同,感受度大到小分別是綠、紅、藍,所以為了得到更適合我們人眼的灰階影像,於是在影像處理界便有了一個彩色轉灰階的標準,就是分別將顏色乘上不同的權重,R*0.299+G*0.587+B*0.114。以...
我們在做影像處理時,會將一張彩色的圖中的一個像素點以RGB來表示,RGB每個顏色各佔8個bit,總共24bit。也稱作三通道影像。而一張灰階的圖只需要用一個通道也就是8bit來表示,如果我們要將一張RGB色彩的圖轉換成灰階時,以較直覺簡單的方法來做的話就是將RGB三個數值相加除以三,就能夠得到我們要的結果。
不過實際上人眼對於三種色彩的亮度感受都不同,感受度大到小分別是綠、紅、藍,所以為了得到更適合我們人眼的灰階影像,於是在影像處理界便有了一個彩色轉灰階的標準,就是分別將顏色乘上不同的權重,R * 0.299 + G * 0.587 + B * 0.114。
以下的範例是以指標的方式去讀取像素做運算後在寫入指標位址
1.開啟一張彩色圖片並顯示
2.以按鈕觸發轉灰階程式
主要程式部分
用雙層for迴圈表示影像的寬度跟高度的數值,用指標遍歷整張圖的像素讀取像素p[0] p[1] p[2],指標分別代表BGR數值,做完運算後儲存到指向新的Bitmap空間的指標R。指標+3是為了要移到下一個像素 因為每個像素佔3個Byte。
以下圖為例子講解指標p的概念
整個專案可以到我的Github下載,有問題可以留言一起討論。
https://github.com/s12121296/visual-C-CLR-/blob/master/RgbtoGray/WindowsApplication1/WindowsApplication1/MyForm.h[1]
請按讚:喜歡 正在載入...
發表者:Xueliang
References https://github.com/s12121296/visual-C-CLR-/blob/master/RgbtoGray/Window...