真彩色图像处理
- 格式:doc
- 大小:202.11 KB
- 文档页数:10
第四部分 真彩色增强
一、真彩色增强方法
图4.1 真彩色增强原理图
1、对HSI图像亮度增强
⑴、将R,G,B分量图转化为H,S,I分量图;
⑵、利用对灰度图增强的方法增强其中的I分量图;
⑶、再将结果转化为用R,G,B分量图来显示。
以上方法并不改变原图的彩色内容,但增强后的图看起来会有些不同。这是因为尽管色调和饱和度没有变化,但亮度分量得到了增强,整个图会比原来更亮一些。
图4.3是基于matlab以增强亮度的方法进行真彩色增强的图像,其代码见附录 彩色图像(RGB)
RGB模型变换为HSI模型
色调H 亮度I 饱和度S
直方图修改
HSI模型变换为RGB模型
增强的彩色图像RGB
(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)
function hsi = rgb2hsi(rgb)
%RGB2HSI Converts an RGB image to HSI.
% HSI = RGB2HSI(RGB) converts an RGB image to HSI. The input image
% is assumed to be of size M-by-N-by-3, where the third dimension
% accounts for three image planes: red, green, and blue, in that
% order. If all RGB component images are equal, the HSI conversion
% is undefined. The input image can be of class double (with values
% in the range [0, 1]), uint8, or uint16.
%
% The output image, HSI, is of class double, where:
% hsi(:, :, 1) = hue image normalized to the range [0, 1] by
% dividing all angle values by 2*pi.
% hsi(:, :, 2) = saturation image, in the range [0, 1].
% hsi(:, :, 3) = intensity image, in the range [0, 1].
% Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
% Digital Image Processing Using MATLAB, Prentice-Hall, 2004
% $Revision: 1.5 $ $Date: 2005/01/18 13:44:59 $
% Extract the individual component images.
rgb = im2double(rgb);
r = rgb(:, :, 1);
g = rgb(:, :, 2);
b = rgb(:, :, 3);
% Implement the conversion equations.
num = 0.5*((r - g) + (r - b));