在介紹CLAHE算法之前必須要先提一下直方圖均衡化,直方圖均衡化算法是一種常見的圖像增強(qiáng)算法,可以讓像素的亮度分配的更加均勻從而獲得一個(gè)比較好的觀察效果。
如下圖就是經(jīng)過直方圖均衡化后的效果圖。
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread(r'E:python_image_simpythonProjectsimimgFig0459(a)(orig_chest_xray).tif', 0) img = cv2.resize(img, (500, 500)) equ=cv2.equalizeHist(img) res = np.hstack((img, equ)) # stacking images side-by-side cv2.imshow('img', res) cv2.waitKey() cv2.destroyAllWindows()
左邊是原圖,右邊是經(jīng)過直方圖均衡化后圖,可以看到肋骨什么的可以更加清晰的顯示了出來,能夠更好的觀察到肋骨等位置的細(xì)節(jié)。
但是美中不足的是總感覺有的地方太亮了,干擾到了我們的觀察。
這是因?yàn)橹狈綀D均衡化有著兩個(gè)問題:
直方圖均衡化是針對(duì)全局進(jìn)行處理的,所以當(dāng)局部出現(xiàn)過亮或者過暗的時(shí)候就會(huì)影響效果。
直方圖均衡化會(huì)增強(qiáng)噪聲。
再來看看經(jīng)過CLAHE算法后的效果。
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread(r'E:python_image_simpythonProjectsimimgreast_digital_Xray.tif', 0) img = cv2.resize(img, (500, 500)) equ = cv2.equalizeHist(img) cla = cv2.createCLAHE(2, (5, 5)) # cv2.ahe cla = cla.apply(img) res = np.hstack((img, equ, cla)) # res = np.hstack((img, equ)) # stacking images side-by-side cv2.imshow('img', res) cv2.waitKey() cv2.destroyAllWindows()
最左側(cè)為原圖,中間為直方圖均衡化后的結(jié)果,最右側(cè)為CLAHE算法的效果。
從視覺效果上來看,CLAHE算法的效果最為明顯。
CLAHE算法針對(duì)上面兩個(gè)問題,提出了相應(yīng)的解決方案:
CLAHE會(huì)將圖像分成一個(gè)一個(gè)的小塊,這樣在局部進(jìn)行直方圖均衡化。
針對(duì)背景噪聲增強(qiáng)的問題,CLAHE算法應(yīng)用了限制對(duì)比度的方法。
CLAHE算法的實(shí)現(xiàn)步驟分為以下三個(gè)部分:
對(duì)圖像進(jìn)行分塊
對(duì)每個(gè)塊進(jìn)行直方圖均衡化和限制對(duì)比度
使用插值的方法得到最后增強(qiáng)的圖片
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1621文章
21514瀏覽量
599116 -
圖像處理
+關(guān)注
關(guān)注
26文章
1268瀏覽量
56384
原文標(biāo)題:FPGA圖像處理--CLAHE算法(一)
文章出處:【微信號(hào):FPGA開源工坊,微信公眾號(hào):FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論