[影象去霧](一)限制對比度的自適應直方圖均衡化(CLAHE)的學習體會——影象分塊
阿新 • • 發佈:2019-01-01
最近研究影象去霧演算法,作為菜鳥,慢慢學習。
演算法原理參考以下兩個連結:
http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html
http://blog.csdn.net/u010839382/article/details/49584181
我採用影象分塊計算對映函式再插值增強的方法,可以把演算法實現分為以下幾個步驟:
(1)輸入原圖進行影象分塊
(2)計運算元影象塊的CDF,對映函式
(3)逐畫素根據插值原則,進行插值運算
(4)輸出處理結果圖
選取的測試影象(長551/寬375)
第一步:影象分塊
參考帖子:http://www.matlabsky.com/thread-11379-1-1.html
該貼固定影象塊大小為64*64個畫素
下面修改的程式(MATLAB)可以設定影象塊的數目為num*num,下邊和右邊不能被8整除的,則根據剩餘大小儲存。
<pre name="code" class="java">%區域性直方圖均衡化 num = 8; %將影象分成num*num塊 h = ceil(height/num); w = ceil(width/num); %子影象塊起始行列號向量 t1 = (0:num-1)*h + 1; t2 = (1:num)*h; t3 = (0:num-1)*w + 1; t4 = (1:num)*w; figure; k = 0; for i = 1 : num for j = 1 : num if(i<num && j<num) temp = I(t1(i):t2(i), t3(j):t4(j),:); else if i == num && j~=num temp = I(t1(i):height, t3(j):t4(j),:); end if j == num && i~=num temp = I(t1(i):t2(i), t3(j):width,:); end if i == num && j==num temp = I(t1(i):height, t3(j):width,:); end end k = k + 1; subplot(num, num, k); imshow(temp); end end
分塊效果如下:
num=2
num=8