算法介紹
256色轉灰度圖是數字圖像處理經典算法中最簡單的算法之一
1、彩色數字圖像中的顏色有紅、綠、藍三種顏色混合而成,對應的像素顏色通道就是RGB(R,G,B),R、G、B數值共有256個數值,也稱為256階,即0—255,計算機通過讀取每一個通道的數值而確定顯示的顏色。
2、灰度圖像只有一個灰度色階通道,我們可以標記為Gray,或者RGB(Gray、Gray、Gray),Gray共有256階,即0—255,計算機通過讀取該通道的值確定顯示的顏色。
那么將彩色圖像轉換為灰色圖像的思路就是將RGB數值轉化為Gray數值。共有5種轉化方式:
(1)浮點算法 :Gray=R * 0.3+G * 0.59+B * 0.11
(2)整數算法:Gray=(R * 30+G * 59+B * 11)/100
(3)移位算法:Gray =(R
28+G
151+B*77)>>8
(4)平均值法:Gray=(R+G+B)/3
(5)僅取綠色:Gray=G
下面我將使用Python語言分別實現上述5種方法并查看效果,操作的圖像如下所示:
代碼實現
在介紹實現代碼之前先介紹我們代碼中借助的一個類庫Matplotlib,它提供了將圖像轉化為數組的方法array,我們得到圖像數組后可以使用坐標得到圖像的顏色元組,里面有我們需要的顏色數值信息。
(1)浮點算法 :Gray=R * 0.3+G * 0.59+B * 0.11
代碼如下:
from PIL import Image
from pylab import *
im = array(Image.open('flower.jpg'))
im[:,:,0] = im[:,:,1] = im[:,:,2] = (im[:,:,0] * 0.3 + im[:,:,1] * 0.59 + im[:,:,2] * 0.11)
imshow(im)
show()
效果如下:
代碼講解:
1、array(Image.open(‘flower.jpg’))可以將一個圖像打開并且轉化為數組類型,數據類型為元組,里面包含RGB數值信息
2、im[x,y,t]表示(x,y)坐標像素的t通道的數值,不明白 :的話建議復習Python,im[:,:,0] = im[:,:,1] = im[:,:,2] = (im[:,:,0] * 0.3 + im[:,:,1] * 0.59 + im[:,:,2] * 0.11)就將所有像素的所有通道值都改為重新計算后的值,也就是我們的浮點算法
3、最后是顯示圖像。
(4)平均值法:Gray=(R+G+B)/3
代碼如下:
from PIL import Image
from pylab import *
im = array(Image.open('flower.jpg'))
im[:,:,0] = im[:,:,1] = im[:,:,2] = (im[:,:,0] + im[:,:,1] + im[:,:,2])/3
imshow(im)
show()
效果如下:
代碼講解:
其實和上一個大體一樣,只是算法不一樣
(5)僅取綠色:Gray=G
代碼如下:
from PIL import Image
from pylab import *
im = array(Image.open('flower.jpg'))
im[:,:,0] = im[:,:,1] = im[:,:,2] = im[:,:,2]
imshow(im)
show()
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
