数字图像处理实验之彩色图像处理

1. 实验目的

  1. 熟练掌握彩色图像的读取、显示与格式转化。
  2. 理解彩色空间的概念,掌握彩色空间的转换过程。
  3. 掌握图像彩色变换基本过程。
  4. 掌握彩色图像处理的基本过程。

2. 实验流程

2.1 彩色图像基本操作

在这里插入图片描述

2.2 伪彩色处理

在这里插入图片描述

2.3 彩色图像平滑滤波

在这里插入图片描述

2.4 RGB转HSI

在这里插入图片描述

3. 实验代码

3.1 彩色图像读取、显示与格式转换

%% 彩色图像读取、显示与格式转换
clear,clc,close ALL;
tic
% 读取索引图像
[indS_1,map] = imread('task1/IndexColor.tif');
gray_image1 = ind2gray(indS_1,map);%索引图转换为灰度图
rgb_1 = ind2rgb(indS_1,map);%索引图转换为rgb
figure('Name','对索引图像转换','NumberTitle','off');
subplot(131),imshow(indS_1,map),title('索引图像');
subplot(132),imshow(gray_image1),title('索引图转换为灰度图');
subplot(133),imshow(rgb_1),title('索引图转换为rgb');
% imwrite导出图像
imwrite(indS_1,map,'索引图.jpg')
imwrite(gray_image1,'索引图转换为灰度图.png');
imwrite(rgb_1,'索引图转换为rgb.tif');
% 读取RGB图像
rgb_2 = imread('task1/fullColor.tif');%读取rgb图像
gray_image2 = rgb2gray(rgb_2);%rgb图像转换为灰度图
[indS_2,map] = rgb2ind(rgb_2,256,'nodither');%rgb图像转换为索引图
figure('Name','对RGB图像转换','NumberTitle','off');
subplot(231),imshow(rgb_2),title('rgb图像');
subplot(232),imshow(gray_image2),title('rgb图像转换为灰度图');
subplot(233),imshow(indS_2,map),title('rgb图像转换为索引图');
% 显示颜色分量
fR = rgb_2(:, :, 1);
fG = rgb_2(:, :, 2);
fB = rgb_2(:, :, 3);
subplot(234),imshow(fR),title('rgb图像R分量');
subplot(235),imshow(fG),title('rgb图像G分量');
subplot(236),imshow(fB),title('rgb图像B分量');
toc

3.2 伪彩色变换

%% 伪彩色变换
clear,clc,close ALL;
tic
gray_1 = imread('task2/Fig0621a.tif');
[m,n] = size(gray_1);
gray_1 = uint8(gray_1);
Pout_1 = zeros(m,n,3,'uint8');
color1 = [255,0,0];
color2 = [255,100,0];
color3 = [255,200,0];
color4 = [255,255,0];
color5 = [50,175,50];
color6 = [0,175,250];
color7 = [0,150,250];
color8 = [0,0,255];
%伪彩色的分类范围,分8for i = 1:m
    for j = 1:n
        if gray_1(i,j)>=240 && gray_1(i,j) <= 255
            Pout_1(i,j,1) = color1(1);
            Pout_1(i,j,2) = color1(2);
            Pout_1(i,j,3) = color1(3);
        elseif gray_1(i,j)>=210 && gray_1(i,j) <= 240
            Pout_1(i,j,1) = color2(1);
            Pout_1(i,j,2) = color2(2);
            Pout_1(i,j,3) = color2(3);
        elseif gray_1(i,j)>=190 && gray_1(i,j) <= 210
             Pout_1(i,j,1) = color3(1);
             Pout_1(i,j,2) = color3(2);
             Pout_1(i,j,3) = color3(3);
        elseif gray_1(i,j)>=170 && gray_1(i,j) <= 190
            Pout_1(i,j,1) = color4(1);
            Pout_1(i,j,2) = color4(2);
            Pout_1(i,j,3) = color4(3);
        elseif gray_1(i,j)>=150 && gray_1(i,j) <= 170
            Pout_1(i,j,1) = color5(1);
            Pout_1(i,j,2) = color5(2);
            Pout_1(i,j,3) = color5(3);
        elseif gray_1(i,j)>=120 && gray_1(i,j) <= 150
            Pout_1(i,j,1) = color6(1);
            Pout_1(i,j,2) = color6(2);
            Pout_1(i,j,3) = color6(3);
        elseif gray_1(i,j)>=80 && gray_1(i,j) <= 120
            Pout_1(i,j,1) = color7(1);
            Pout_1(i,j,2) = color7(2);
            Pout_1(i,j,3) = color7(3);
        elseif gray_1(i,j)>=0 && gray_1(i,j) <= 80
            Pout_1(i,j,1) = color8(1);
            Pout_1(i,j,2) = color8(2);
            Pout_1(i,j,3) = color8(3);
        end
    end
end  
figure;
subplot(121),imshow(gray_1),title('原图');
subplot(122),imshow(Pout_1),title('伪彩色变换');
toc

3.3 彩色图像平滑滤波

%% 彩色图像平滑滤波
clear,clc,close ALL;
tic
F = imread('task3/Fig0638a_noise.tif');
fR = F(:,:,1);
fG = F(:,:,2);
fB = F(:,:,3);
%设置滤波的大小,RGB分别滤波再拼接
w1 = fspecial('average',3);
w2 = fspecial('average',10);
fR1_filtered = imfilter(fR,w1,'replicate');%分通道平滑滤波
fG1_filtered = imfilter(fG,w1,'replicate');
fB1_filtered = imfilter(fB,w1,'replicate');
fR2_filtered = imfilter(fR,w2,'replicate');
fG2_filtered = imfilter(fG,w2,'replicate');
fB2_filtered = imfilter(fB,w2,'replicate');
F1_filtered = cat(3,fR1_filtered,fG1_filtered,fB1_filtered);
F2_filtered = cat(3,fR2_filtered,fG2_filtered,fB2_filtered);
figure;
subplot(131),imshow(F),title('原图');
subplot(132),imshow(F1_filtered),title('滤波器大小为5');
subplot(133),imshow(F2_filtered),title('滤波器大小为10');
toc

3.4 RGB颜色空间到HSI的转换

%% RGB颜色空间到HSI的转换
clear,clc,close ALL;
tic
I1 = imread('task4/fullColor.tif');
% 获取图像大小
[m,n,c] = size(I1);
I2 = double(I1);
H = zeros(m,n);
S = zeros(m,n);
I = zeros(m,n);
r = I2(:,:,1);
g = I2(:,:,2);
b = I2(:,:,3);
% 计算HSI分量
for i = 1:m
    for j = 1:n
      R = r(i,j);
      G = g(i,j);
      B = b(i,j);
      angle = acos(0.5*((R-G)+(R-B))/sqrt((R-G)^2)+(R-B)*(G-B)+eps);
      if B <= G
          H(i,j) = angle;
      else
          H(i,j) = 360 - angle;
      end
      min1 = min(min(R,G),B);
      S(i,j) = 1 - 3*min1/(R+G+B);
      I(i,j) = (R+G+B)/3;
    end
end
figure('Name','RGB转换为HSI','NumberTitle','off');
subplot(221),imshow(I1),title('原图');
subplot(222),imshow(H,[]),title('H');
subplot(223),imshow(S,[]),title('S');
subplot(224),imshow(I,[]),title('I');
toc

4. 实验结果及分析

4.1 彩色图像读取、显示与格式转换

1、读取索引图:
在这里插入图片描述

2、读取RGB图像:
在这里插入图片描述

3、结果分析:
由图3.1,共有图3.1(a)—图3.1©三幅图。其中图3.1(a)为读入原图的索引图象。图3.1 (b)和©分别为对原图做转换的灰度图像和RGB图像。
通过普通的肉眼观察,基本不能辨别索引图像和真彩色图像的区别。
由图3.2,共有图3.2(a)—图3.2(f)三幅图。其中图3.2(a)为读入原图的RGB图象。图3.2(b)和©分别为对原图做转换的灰度图像和索引图像。此外,还通过RGB三通道分离,展示R,G,B的单色图像。
单色图中,也满足[0,255]的灰度变化。故很明显地可以从上图中灰度看出,图3.2(d)的值最高,也就反应出了图像中的“草莓”是红色的事实;此外图3.2(e)中“绿叶”部分很亮,也与事实相符;三幅图中的“桌子”部分都很亮,而原图中的桌子就是白色的,因此也显示出了三色组成的白色,故在每个分量中值都很大。

4.2 伪彩色变换

1、实验结果
在这里插入图片描述

2、结果分析
由图3.3(a)看出,原图为焊缝的一张灰度图片。可见中心处亮度较高,具体的识别点不是很清楚,因此可对此图像进行一个伪彩色处理。本实验中主要对原图进行灰度分级,采用灰度分层的方法进行伪彩色变换。
由图3.3(b)可看出,在8个灰度级情况下,可分析整体效果较不错,中心处的焊缝是全图像中最亮部分,在彩色图像中显示为最高的红色,较为突出,可看出伪彩色处理效果较好。

4.3 彩色图像滤波处理

1、实验结果
在这里插入图片描述

2、结果分析
本实验中,共对三幅图像进行RGB分频道滤波处理,图3.4(b),©分别为原图经过大小为5和大小为10的均值滤波器处理过后的结果图。
根据图3.4(b),看出整体滤波效果较为不错,基本噪声可去除。
对比图3.4©,较图3.4(b)程度更深,但处理的视觉效果并不是很好,模糊程度太高,没有达到最想要的滤波效果。
为了体现在本滤波器下的最优模板选择,本实验进行了滤波器大小的判断和对比,如下图:
可看到效果,当滤波器大小为3时,整体效果较大小为5时更好一些,但同时滤波的程度和效果也会有一定程度的下降,这也就说明了图像处理中的选择,以及对结果的要求,有时并不会产生一个十全十美的方案,需要留下更重要的方面。
在这里插入图片描述

4.4 RGB转HSI

1、实验效果
在这里插入图片描述

2、结果分析
图3.6(a)即为原图,而图3.6(b),©,(d)为经过HIS转换后的三幅分量图。
由图3.6(a),可知色调图将冷暖色调分开,“红色”的草莓部分非常明亮,但周围的环境却非常的暗。
由图3.6(b),饱和度表示了颜色的纯度,纯光谱色是完全饱和的,加入白光会稀释饱和度。饱和度越大,颜色看起来就会越鲜艳,反之亦然。
由图3.6©,亮度对应了成像亮度和图像灰度,是颜色的明亮程度。

  • 21
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值