【图像处理】直方图均衡化
生活随笔
收集整理的這篇文章主要介紹了
【图像处理】直方图均衡化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直方圖均衡化是圖像處理領域中利用圖像直方圖增強圖像對比度的一種方法。
如果一副圖像的像素占有很多的灰度級而且分布均勻,那么這樣的圖像往往有高對比度和多變的灰度色調。“直方圖均衡化”是把原始圖像的灰度直方圖從比較集中的某個灰度區間變成在全部灰度范圍內的均勻分布。直方圖均衡化就是對圖像進行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內的像素數量大致相同。直方圖均衡化就是把給定圖像的直方圖分布改變成“均勻”分布直方圖分布。
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 : Rfor j = 1 : Ccnt(1, I(i, j) + 1) = cnt(1, I(i, j) + 1) + 1;end endf = zeros(1, 256); f = double(f); cnt = double(cnt);% 統計每個像素值出現的概率, 得到概率直方圖 for i = 1 : 256f(1, i) = cnt(1, i) / (R * C); end% 求累計概率,得到累計直方圖 for i = 2 : 256f(1, i) = f(1, i - 1) + f(1, i); end% 用f數組實現像素值[0, 255]的映射。 for i = 1 : 256f(1, i) = f(1, i) * 255; end% 完成每個像素點的映射 I = double(I); for i = 1 : Rfor j = 1 : CI(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 : Rfor j = 1 : Cfor k = 1 : Kcnt(k, RGB(i, j, k) + 1) = cnt(k, RGB(i, j, k) + 1) + 1;endend endf = zeros(3, 256); f = double(f); cnt = double(cnt);% 統計每個像素值出現的概率, 得到概率直方圖 for k = 1 : Kfor i = 1 : 256f(k, i) = cnt(k, i) / (R * C);end end% 求累計概率,得到累計直方圖 for k = 1 : Kfor i = 2 : 256f(k, i) = f(k, i - 1) + f(k, i);end end% 用f數組實現像素值[0, 255]的映射。 for k = 1 : Kfor i = 1 : 256f(k, i) = f(k, i) * 255;end end% 完成每個像素點的映射 for i = 1 : Rfor j = 1 : Cfor k = 1 : KRGB(i, j, k) = f(k, RGB(i, j, k) + 1);endend end% 輸出 RGB2 = uint8(RGB); subplot(122); imshow(RGB2); title('彩色直方圖均衡化'); imwrite(RGB2,'chq_photo.jpg') %保存直方圖均衡化后的圖像總結
以上是生活随笔為你收集整理的【图像处理】直方图均衡化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows任务管理器 explore
- 下一篇: matlab-xlsread无法打开文件