彩色圖像到灰度轉(zhuǎn)換 常見方法匯總與對比
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

補(bǔ)一下基礎(chǔ)知識,關(guān)注一波彩色轉(zhuǎn)灰度
覺得不錯(cuò),請點(diǎn)【在看】支持!
今天來說說圖像處理最基礎(chǔ)知識,彩色圖像與灰度圖像轉(zhuǎn)換,一般大家熟知的彩色圖像轉(zhuǎn)灰度的公式如下:

OpenCV中有一個(gè)模塊是彩色圖像轉(zhuǎn)為灰度圖像的,基于API是cvtCOLOR,我這里就直接裸奔了一下,其實(shí)更好的方法應(yīng)該是基于查找表與像素映射,可以獲得極高速度優(yōu)勢!我這里就簡單的用python演示了一下,代碼實(shí)現(xiàn)如下:
import?cv2?as?cv
import?numpy?as?np
def?lut(weight):
????lut?=?[]
????for?i?in?range(256):
????????lut.append(np.int32(i*weight))
????return?np.array(lut)
def?rgb2gray(image,?type,?blut=None,?glut=None,?rlut=None):
????h,?w,?c?=?image.shape
????gray?=?np.zeros((h,w),?dtype=np.uint8)
????for?row?in?range(h):
????????for?col?in?range(w):
????????????b,?g,?r?=?np.int32(image[row,col])
????????????if?type?==?1:
????????????????y?=?blut[g]?+?glut[g]?+?rlut[r]
????????????if?type?==?2:
????????????????y?=?(max([b,?g,?r])?+?min([b,?g,r]))?//?2
????????????if?type?==?3:
????????????????y?=?(b+g+r)?//?3
????????????if?type?==?4:
????????????????y?=?max([b,?g,?r])
????????????if?type?==?5:
????????????????y?=?min([b,?g,?r])
????????????gray[row,?col]?=?y
????return?gray
if?__name__?==?"__main__":
????src?=?cv.imread("D:/images/flower.png")
????cv.imshow("input",?src)
????gray1?=?rgb2gray(src,?1,?lut(0.299),?lut(0.587),?lut(0.114))
????gray2?=?rgb2gray(src,?1,?lut(0.21),?lut(0.72),?lut(0.07))
????gray3?=?rgb2gray(src,?2)
????gray4?=?rgb2gray(src,?3)
????gray5?=?rgb2gray(src,?4)
????gray6?=?rgb2gray(src,?5)
????cv.imshow("gray1",?gray1)
????cv.imshow("gray2",?gray2)
????cv.imshow("gray3",?gray3)
????cv.imshow("gray4",?gray4)
????cv.imshow("gray5",?gray5)
????cv.imshow("gray6",?gray6)
????cv.waitKey(0)
????cv.destroyAllWindows()彩色圖像如下:

上述各種灰度轉(zhuǎn)換方法對比結(jié)果如下:


交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會(huì)逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會(huì)請出群,謝謝理解~
評論
圖片
表情
