對上述圖像進行增強戏售、主要增強兩方面铜跑,一方面是圖像的亮度扔傅,另一方面就是圖像的對比度秉犹。
第一種方法:將RGB格式的圖像轉為HSV或者HSI格式姆钉,對于亮度值進行修改褥蚯。主要是對V值直方圖進行均衡化国夜。
clear all;
close all;
RGB=imread('test.jpeg');
HSV=rgb2hsv(RGB);
H=HSV(:,:,1);
S=HSV(:,:,2);
V=HSV(:,:,3);
figure;
subplot(1,3,1),imhist(H);
subplot(1,3,2),imhist(S);
subplot(1,3,3),imhist(V);
V=histeq(V);
figure,imhist(V);
HSV(:,:,1)=H;
HSV(:,:,2)=S;
HSV(:,:,3)=V;
RGB_1=hsv2rgb(HSV);
figure;
subplot(1,2,1),imshow(RGB);
subplot(1,2,2),imshow(RGB_1);
最后的效果如下圖:
白云鹏控、山脈威始、河流有了亮度和對比度提升枢纠。
第二種方法就是對RGB三個通道直接進行直方圖均衡化。
clear all;
close all;
RGB=imread('test.jpeg');
R=double((RGB(:,:,1)))/255;
G=double((RGB(:,:,2)))/255;
B=double((RGB(:,:,3)))/255;
figure;
subplot(1,3,1),imshow(R);
subplot(1,3,2),imshow(G);
subplot(1,3,3),imshow(B);
R=histeq(R);
G=histeq(G);
B=histeq(B);
RGB_1(:,:,1)=R;
RGB_1(:,:,2)=G;
RGB_1(:,:,3)=B;
figure;
subplot(1,2,1),imshow(RGB);
subplot(1,2,2),imshow(RGB_1),brighten(0.6);
figure;
subplot(1,3,1),imhist(R);
subplot(1,3,2),imhist(G);
subplot(1,3,3),imhist(B);
這個處理效果如下:
由上圖可以看出黎棠、圖像的色調已經被修改晋渺、這也是RGB值修改的一個缺點镰绎。
第三種方法就是目前我采用的,根據HE木西、BBHE畴栖、DSIHE、所采用的一種圖像增強方法八千。其原理簡單介紹如下:
首先將RGB圖像轉為灰度圖像吗讶、那么每個灰度圖像像素的數值根據最大值法即:max(R,G恋捆,B)來確定照皆,最大值法(圖4)與加權平均(圖2)、平均法處理(圖3)的對比圖如下所示:
由上圖可以看出鸠信、最大值處理的灰度圖像較其余兩幅圖的亮度有較大的提升纵寝。
接著處理灰度圖像的直方圖、找出該圖像的平均值星立、將直方圖劃分為兩部分爽茴、接著分別對兩部分的直方圖進行均衡化處理。
在處理完成之后绰垂、對圖像進行恢復室奏、即將灰度圖像轉化成RGB圖像,找出處理之后的圖像與之前圖像的數值比例關系劲装、然后將其與圖像想乘胧沫,即得到R、G占业、B三個分量的數值绒怨。最后的對比圖如下:
clear all;
close all;
clc;
RGB=imread('test.jpeg');
[row,column,n]=size(RGB);
R=RGB(:,:,1);
G=RGB(:,:,2);
B=RGB(:,:,3);
for i=1:row
for j=1:column
juzhen=[R(i,j),G(i,j),B(i,j)];
intensity_1(i,j)=0.2989*R(i,j)+0.587*G(i,j)+0.114*B(i,j);
intensity_2(i,j)=1/3*(R(i,j)+G(i,j)+B(i,j));
intensity_3(i,j)=max(juzhen);
end
end
figure,
subplot(2,2,1),imshow(rgb2gray(RGB));
subplot(2,2,2),imshow(intensity_1);
subplot(2,2,3),imshow(intensity_2);
subplot(2,2,4),imshow(intensity_3);
Pre_image=intensity_3;
figure;
subplot(2,2,1),imshow(intensity_3);
subplot(2,2,2),imhist(intensity_3);
subplot(2,2,3),imshow(Pre_image);
subplot(2,2,4),imhist(Pre_image);
Pre_image=im2uint8(Pre_image);
[height,width]=size(Pre_image);
XT=round(mean(mean(Pre_image)));
h = zeros(1,256);%統(tǒng)計各灰度數目,共256個灰度級
for m = 1:height
for n = 1: width
h(Pre_image(m,n) + 1) = h(Pre_image(m,n) + 1) + 1;%對應灰度值像素點數量增加一
end
end
SH1=0;
SH2=0;
for x=0:XT
SH1=SH1+h(x+1);
end
for x=(XT+1):255
SH2=SH2+h(x+1);
end
N=height*width;
RSH1=SH1/N;
RSH2=SH2/N;
SEP_P=round(255*RSH1);
DRH1_start=0;
DRH1_end=SEP_P;
DRH2_start=SEP_P+1;
DRH2_end=255;
sum1=0;
CH1=zeros(1,256);
for x_1=0:XT
sum1=sum1+h(x_1+1);
CH1(x_1+1)=sum1/SH1;
end;
sum2=0;
CH2=zeros(1,256);
for x_2=(XT+1):255
sum2=sum2+h(x_2+1);
CH2(x_2+1)=sum2/SH2;
end
for i=1:height
for j=1:width
if Pre_image(i,j)
h(Pre_image(i,j)+1)=DRH1_start+(DRH1_end-DRH1_start)*CH1(Pre_image(i,j)+1);
else
h(Pre_image(i,j)+1)=DRH2_start+(DRH2_end-DRH2_start)*CH2(Pre_image(i,j)+1);
end
end
end
for i=1:height
for j=1:width
Aft_image(i,j)=h(Pre_image(i,j)+1);
end
end
Aft_image=uint8(Aft_image);
subplot(1,2,1),imhist(Aft_image);
subplot(1,2,2),imshow(Aft_image);
for i=1:height
for j=1:width
Alpha(i,j)=double(Aft_image(i,j))./double(intensity_3(i,j));
end
end
intensity_R=Alpha.*double(R);
intensity_G=Alpha.*double(G);
intensity_B=Alpha.*double(B);
RGB_1(:,:,1)=intensity_R;
RGB_1(:,:,2)=intensity_G;
RGB_1(:,:,3)=intensity_B;
figure,
subplot(1,2,2),imshow(uint8(RGB_1));
subplot(1,2,1),imshow(RGB);
這種方法對于圖像增強的細節(jié)有較好的增強作用谦疾。
接下來是通過HSI方面對圖像進行增強南蹂。