資源簡介
圖像亮度增強,采用各種非線性函數變換,包括冪函數、指數函數、對數函數等等,以及直方圖均衡化方法。
代碼片段和文件信息
%函數變換法的思想是通過拉伸暗區并壓縮亮區,從而達到亮度增強的目的
%直方圖均衡化的思想是通過改變灰度分布來增強對比度
I=imread(‘lena.jpg‘);?%圖片讀入
[heightwidth]?=?size(I);
model=input(‘請選擇變換函數:1.方根;2.對數函數;3.指數函數;4.冪函數;5.直方圖均衡化:‘);
if(model==5)
????figure;%顯示
????subplot(221);imshow(I);title(‘原圖‘);
????subplot(223);imhist(I);title(‘原圖直方圖‘);%顯示原始圖像直方圖
????NumPixel=zeros(1256);%統計各灰度數目,共256個灰度級
????for?i=1:height
????????for?j=1:?width
????????????NumPixel(I(ij)+1)?=?NumPixel(I(ij)+1)+1;%對應灰度值像素點數量增加1
????????end
????end
????%計算灰度分布密度
????ProbPixel?=?zeros(1256);
????for?i?=?1:256
????????ProbPixel(i)?=?NumPixel(i)?/?(height?*?width?*?1.0);
????end
????%計算累計直方圖分布
????CumuPixel?=?zeros(1256);
????for?i?=?1:256
????????if?i?==?1
????????????CumuPixel(i)=ProbPixel(i);
????????else
????????????CumuPixel(i)=CumuPixel(i-1)+ProbPixel(i);
????????end
????end
????%累計分布取整
????CumuPixel?=uint8(255?.*CumuPixel+0.5);
????%對灰度值進行映射(均衡化)
????for?i=1:height
????????for?j=1:width
????????????I(ij)=CumuPixel(I(ij)+1);
????????end
????end
????subplot(222);imshow(I);title(‘直方圖均衡化后的圖像‘);
????subplot(224);imhist(I);title(‘直方圖均衡化的直方圖‘);
????imwrite(I‘直方圖均衡化后的圖像.jpg‘);%寫新圖
else
????switch(model)
????????case?3
????????????a_exponent=input(‘請輸入大于1的底數(建議為1.01):‘);
????????c
評論
共有 條評論