完整版真彩色图像处理.docx
《完整版真彩色图像处理.docx》由会员分享,可在线阅读,更多相关《完整版真彩色图像处理.docx(11页珍藏版)》请在冰豆网上搜索。
完整版真彩色图像处理
第四部分真彩色增强
一、真彩色增强方法
图4.1真彩色增强原理图
1、对HSI图像亮度增强
、将R,G,B分量图转化为H,S,I分量图;
、利用对灰度图增强的方法增强其中的I分量图;
、再将结果转化为用R,G,B分量图来显示。
以上方法并不改变原图的彩色内容,但增强后的图看起来会有些不同。
这是因为尽管色调和饱和度没有变化,但亮度分量得到了增强,整个图会比原来更亮一些。
图4.3是基于matlab以增强亮度的方法进行真彩色增强的图像,其代码见附录
(a)增强前图像
(b)增强后图像
图4.2对HSI进行亮度增强结果
结论:
图(b)明显比图(a)要亮的多,在视觉效果上,图(b)比较让人觉得美好。
2、对HSI图像进行对比度增强
图4.4是基于matlab以增强对比度的方法进行真彩色增强的图像,其代码见附录
图4.3对HSI增强对比度增强的
结论:
图(b)的视觉效果明显比图(a)要好的多,清晰的多,颜色比(a)要深。
3、对HSI图像进行亮度和饱和度的增强
图4.5是基于matlab以增强亮度和饱和度的方法进行真彩色增强的图像,其代码见附录
图4.4对HSI图像进行增强结果
结论:
这是对前两个方法的综合,很显然,图(b)比图(a)要亮,要清晰,视觉效果比以上两种方法分别做要好的多。
二、直接在rgb空间对图像增强
图4.6是基于matlab在rgb空间增强图像,其代码见附录
图4.5对RGB图像进行增强结果
以下是基于matlab以增强亮度的方法进行真彩色增强的代码:
%%彩色图像亮度增强(执行速度较慢)
clc
clear
fc=imread('E:
\maomao.jpg');
figure
(1);
imshow(fc)
title('原始真彩色(256*256*256色)图像')
fr=fc(:
:
1);
fg=fc(:
:
2);
fb=fc(:
:
3);
%imshow(fr)
%title('红色分量图像')
%imshow(fg)
%title('绿色分量图像')
%imshow(fb)
%title('蓝色分量图像')
h=rgb2hsi(fc);
H=h(:
:
1);
S=h(:
:
2);
I=h(:
:
3);
I=I*1.5;
%imshow(H)
%title('色调分量图像')
%imshow(S)
%title('饱和度分量图像')
%imshow(I)
%title('亮度分量图像')
h=cat(3,H,S,I);%cat函数是拼接数组的函数,这里将在第3维上进行拼接。
f=hsi2rgb(h);%增强亮度分量后的rgb图像
f=min(f,1);%保证元素值最大为1,因为按公式转换为rgb后可能出现大于1的情况
figure
(2);
imshow(f)
title('仅增强HSI图像的亮度分量所得到的RGB图像')
基于matlab以增强对比度的方法进行真彩色增强代码:
%%例6.8彩色图像亮度增强(执行速度较慢)
clc
clear
fc=imread('I:
\maomao.jpg');
figure
(1);
imshow(fc)
title('原始真彩色(256*256*256色)图像')
fr=fc(:
:
1);
fg=fc(:
:
2);
fb=fc(:
:
3);
%imshow(fr)
%title('红色分量图像')
%imshow(fg)
%title('绿色分量图像')
%imshow(fb)
%title('蓝色分量图像')
h=rgb2hsi(fc);
H=h(:
:
1);
S=h(:
:
2);
I=h(:
:
3);
S=S*2.0;
%imshow(H)
%title('色调分量图像')
%imshow(S)
%title('饱和度分量图像')
%imshow(I)
%title('亮度分量图像')
h=cat(3,H,S,I);%cat函数是拼接数组的函数,这里将在第3维上进行拼接。
f=hsi2rgb(h);%增强亮度分量后的rgb图像
f=min(f,1);%保证元素值最大为1,因为按公式转换为rgb后可能出现大于1的情况
figure
(2);
imshow(f)
title('增强HSI图像的对比度所得到的RGB图像')
基于matlab以增强亮度和饱和度的方法进行真彩色增强的图像
%%例6.8彩色图像亮度增强(执行速度较慢)
clc
clear
fc=imread('I:
\maomao.jpg');
figure
(1);
imshow(fc)
fr=fc(:
:
1);
fg=fc(:
:
2);
fb=fc(:
:
3);
%imshow(fr)
%title('红色分量图像')
%imshow(fg)
%title('绿色分量图像')
%imshow(fb)
%title('蓝色分量图像')
h=rgb2hsi(fc);
H=h(:
:
1);
S=h(:
:
2);
I=h(:
:
3);
I=I*2.0;
S=S*2.0;
%imshow(H)
%title('色调分量图像')
%imshow(S)
%title('饱和度分量图像')
%imshow(I)
%title('亮度分量图像')
h=cat(3,H,S,I);%cat函数是拼接数组的函数,这里将在第3维上进行拼接。
f=hsi2rgb(h);%增强亮度分量后的rgb图像
f=min(f,1);%保证元素值最大为1,因为按公式转换为rgb后可能出现大于1的情况
figure
(2);
imshow(f)
rgb图像转化为hsi图像的代码:
rgb2hsi(rgb)
functionhsi=rgb2hsi(rgb)
%RGB2HSIConvertsanRGBimagetoHSI.
%HSI=RGB2HSI(RGB)convertsanRGBimagetoHSI.Theinputimage
%isassumedtobeofsizeM-by-N-by-3,wherethethirddimension
%accountsforthreeimageplanes:
red,green,andblue,inthat
%order.IfallRGBcomponentimagesareequal,theHSIconversion
%isundefined.Theinputimagecanbeofclassdouble(withvalues
%intherange[0,1]),uint8,oruint16.
%
%Theoutputimage,HSI,isofclassdouble,where:
%hsi(:
:
1)=hueimagenormalizedtotherange[0,1]by
%dividingallanglevaluesby2*pi.
%hsi(:
:
2)=saturationimage,intherange[0,1].
%hsi(:
:
3)=intensityimage,intherange[0,1].
%Copyright2002-2004R.C.Gonzalez,R.E.Woods,&S.L.Eddins
%DigitalImageProcessingUsingMATLAB,Prentice-Hall,2004
%$Revision:
1.5$$Date:
2005/01/1813:
44:
59$
%Extracttheindividualcomponentimages.
rgb=im2double(rgb);
r=rgb(:
:
1);
g=rgb(:
:
2);
b=rgb(:
:
3);
%Implementtheconversionequations.
num=0.5*((r-g)+(r-b));
den=sqrt((r-g).^2+(r-b).*(g-b));
theta=acos(num./(den+eps));
H=theta;
H(b>g)=2*pi-H(b>g);
H=H/(2*pi);
num=min(min(r,g),b);
den=r+g+b;
den(den==0)=eps;
S=1-3.*num./den;
H(S==0)=0;
I=(r+g+b)/3;
%Combineallthreeresultsintoanhsiimage.
hsi=cat(3,H,S,I);
hsi图像转化为rgb图像的代码:
hsi2rgb(hsi)
functionrgb=hsi2rgb(hsi)
%HSI2RGBConvertsanHSIimagetoRGB.
%RGB=HSI2RGB(HSI)convertsanHSIimagetoRGB,whereHSIis
%assumedtobeofclassdoublewith:
%hsi(:
:
1)=hueimage,assumedtobeintherange
%[0,1]byhavingbeendividedby2*pi.
%hsi(:
:
2)=saturationimage,intherange[0,1].
%hsi(:
:
3)=intensityimage,intherange[0,1].
%
%Thecomponentsoftheoutputimageare:
%rgb(:
:
1)=red.
%rgb(:
:
2)=green.
%rgb(:
:
3)=blue.
%Copyright2002-2004R.C.Gonzalez,R.E.Woods,&S.L.Eddins
%DigitalImageProcessingUsingMATLAB,Prentice-Hall,2004
%$Revision:
1.5$$Date:
2003/10/1301:
01:
06$
%ExtracttheindividualHSIcomponentimages.
hsi=im2double(hsi);
H=hsi(:
:
1)*2*pi;
S=hsi(:
:
2);
I=hsi(:
:
3);
%Implementtheconversionequations.
R=zeros(size(hsi,1),size(hsi,2));
G=zeros(size(hsi,1),size(hsi,2));
B=zeros(size(hsi,1),size(hsi,2));
%RGsector(0<=H<2*pi/3).
idx=find((0<=H)&(H<2*pi/3));
B(idx)=I(idx).*(1-S(idx));
R(idx)=I(idx).*(1+S(idx).*cos(H(idx))./cos(pi/3-H(idx)));
G(idx)=3*I(idx)-(R(idx)+B(idx));
%BGsector(2*pi/3<=H<4*pi/3).
idx=find((2*pi/3<=H)&(H<4*pi/3));
R(idx)=I(idx).*(1-S(idx));
G(idx)=I(idx).*(1+S(idx).*cos(H(idx)-2*pi/3)./...
cos(pi-H(idx)));
B(idx)=3*I(idx)-(R(idx)+G(idx));
%BRsector.
idx=find((4*pi/3<=H)&(H<=2*pi));
G(idx)=I(idx).*(1-S(idx));
B(idx)=I(idx).*(1+S(idx).*cos(H(idx)-4*pi/3)./...
cos(5*pi/3-H(idx)));
R(idx)=3*I(idx)-(G(idx)+B(idx));
%CombineallthreeresultsintoanRGBimage.Clipto[0,1]to
%compensateforfloating-pointarithmeticroundingeffects.
rgb=cat(3,R,G,B);
rgb=max(min(rgb,1),0);
直接在RGB空间进行图像增强
clear
clc
A=imread('C:
\Users\liuxinju\Desktop\maomao.jpg');%读入原始RGB图像
whos;
figure;
imshow(A):
title('originalimage');%显示图像
[rcd]=size(A);%计算图像大小
%------计算红色分量并显示分解图------%
red(:
:
1)=A(:
:
1);
red(:
:
2)=zeros(r,c);
red(:
:
3)=zeros(r,c);
red=uint8(red*2.0);
whos;
figure;
imshow(red)
title('RedComponent');
%-------计算绿色分量并显示分解图-------%
green(:
:
2)=A(:
:
2);
green(:
:
1)=zeros(r,c);
green(:
:
3)=zeros(r,c);
green=uint8(green*2.0);
figure;
imshow(green)
title('GreenComponent');
%--------计算蓝色分量并显示分解图-------%
blue(:
:
3)=A(:
:
3);
blue(:
:
1)=zeros(r,c);
blue(:
:
2)=zeros(r,c);
blue=uint8(blue*2.0);
figure;
imshow(blue)
title('BlueComponent');
%------------合成-------------%
B(:
:
1)=red(:
:
1);
B(:
:
2)=green(:
:
2);
B(:
:
3)=blue(:
:
3);
figure;
imshow(B):
title('compositionimage')