真彩色图像处理

  • 格式: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));