【圖像處理】直方圖均衡化

直方圖均衡化是圖像處理領域中利用圖像直方圖增強圖像對比度的一種方法。

如果一副圖像的像素佔有很多的灰度級而且分佈均勻,那麼這樣的圖像往往有高對比度和多變的灰度色調。“直方圖均衡化”是把原始圖像的灰度直方圖從比較集中的某個灰度區間變成在全部灰度範圍內的均勻分佈。直方圖均衡化就是對圖像進行非線性拉伸,重新分配圖像像素值,使一定灰度範圍內的像素數量大致相同。直方圖均衡化就是把給定圖像的直方圖分佈改變成“均勻”分佈直方圖分佈。

matlab代碼實現

1、灰度圖均衡化

RGB = imread('1.jpg'); % 讀取彩色圖
subplot(131);
imshow(RGB);
title('彩色圖');

I=rgb2gray(RGB); % 將彩色圖轉化爲灰度圖
subplot(132);
imshow(I);
title('灰度圖');

[R, C] = size(I);

% 統計每個像素值出現次數
cnt = zeros(1, 256);
for i = 1 : R
    for j = 1 : C
        cnt(1, I(i, j) + 1) = cnt(1, I(i, j) + 1) + 1;
    end
end

f = zeros(1, 256);
f = double(f); cnt = double(cnt);

% 統計每個像素值出現的概率, 得到概率直方圖
for i = 1 : 256
    f(1, i) = cnt(1, i) / (R * C);
end

% 求累計概率,得到累計直方圖
for i = 2 : 256
    f(1, i) = f(1, i - 1) + f(1, i);
end

% 用f數組實現像素值[0, 255]的映射。 
for i = 1 : 256
    f(1, i) = f(1, i) * 255;
end

% 完成每個像素點的映射
I = double(I);
for i = 1 : R
    for j = 1 : C
        I(i, j) = f(1, I(i, j) + 1);
    end
end

% 輸出
I = uint8(I);
subplot(133);
imshow(I);
title('直方圖均衡化');
imwrite(I,'chq_gphoto.jpg') %保存直方圖均衡化後的圖像

以圖像處理界的聞名人物-蕾娜(Lena)的照片爲例,(因爲照片本身是灰度圖,所以將彩色圖轉爲灰度圖那一步就無用了。)


2、彩色圖均衡化

RGB = imread('1.jpg'); % 讀取彩色圖
subplot(121);
imshow(RGB);% 顯示彩色圖像
title('彩色圖');

[R, C, K] = size(RGB); % 新增的K表示顏色通道數

% 統計每個像素值出現次數
cnt = zeros(K, 256);
for i = 1 : R
    for j = 1 : C
        for k = 1 : K
            cnt(k, RGB(i, j, k) + 1) = cnt(k, RGB(i, j, k) + 1) + 1;
        end
    end
end

f = zeros(3, 256);
f = double(f); cnt = double(cnt);

% 統計每個像素值出現的概率, 得到概率直方圖
for k = 1 : K
    for i = 1 : 256
        f(k, i) = cnt(k, i) / (R * C);
    end
end

% 求累計概率,得到累計直方圖
for k = 1 : K
    for i = 2 : 256
        f(k, i) = f(k, i - 1) + f(k, i);
    end
end

% 用f數組實現像素值[0, 255]的映射。 
for k = 1 : K
    for i = 1 : 256
        f(k, i) = f(k, i) * 255;
    end
end

% 完成每個像素點的映射
for i = 1 : R
    for j = 1 : C
        for k = 1 : K
            RGB(i, j, k) = f(k, RGB(i, j, k) + 1);
        end
    end
end

% 輸出
RGB2 = uint8(RGB);
subplot(122);
imshow(RGB2);
title('彩色直方圖均衡化');
imwrite(RGB2,'chq_photo.jpg') %保存直方圖均衡化後的圖像

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章