中国地质大学数字图像处理报告.
- 格式:doc
- 大小:6.15 MB
- 文档页数:33
中国地质大学(武汉) 数字图像处理实习报告书
姓名:
专业:
班级:
学号:
指导老师:
第1题:
实验内容及目的:
根据灰度图象得到一副彩色图像(变换函数自定),分别显示1幅彩色图象的R ,G ,B 分量(每个分量用8 bit 表示),和这幅彩色图象的H ,S ,I 分量(每个分量也各用8 bit 表示)。
通过本题学会灰度图和彩色图之间的转换,了解RGB 空间和HIS 空间之间的关系。 实验原理:
图像由若干个像素点组成。灰度图像矩阵的每个元素对应一个灰度值,伪彩色图像矩阵的每个元素对应R 、G 、B 分量的值。将一幅灰度图变为一幅彩色图相当于在灰度值与RGB 分量之间建立函数关系。HIS 彩色空间由H (色调)、S (饱和度)、I (辉度)分量构成。RGB 分量和HIS 分量的对应关系如下:
根据对应函数将RGB 分量转化为HIS 分量并显示,即可得到所需的HIS 分量图。 思路分析:
用MA TLAB 处理图像首先要将灰度图像读入。读入后将图像矩阵中的元素转化为uint8类型处理。将灰度图变为彩色图就是在灰度值与R 、G 、B 分量之间建立关系,所以要先生成R 、G 、B 分量的矩阵,这就要知道原灰度图的大小(用size ()函数实现)。建立R 、G 、B 分量的矩阵后,采用循环根据原图像的灰度值对其进行赋值。最后用cat ()函数合并三个分量得到生成的彩色图。
读入彩色图像并转为uint8类型,根据彩色图像的构成将R 、G 、B 分量从图像矩阵中分量出来并显示。
显示图像的HIS 分量时,首先将图像转化为double 类型处理。然后分离出RGB 分量,根据RGB 分量和HIS 分量之间的转化关系得到HIS 分量,此时的HIS 分量时double 类型,所以将这三个分量合并后转化为8bit 类型。将转化后的矩阵再分离出HIS 分量即可得到8bit ⎩⎨⎧≤-≥=--+--+-=-=++=-.
,2;, ],))(()()]()[(21[cos );,,min(31 ;3/)(21B G B G H B G B R G R B R G R B G R I S B G R I θπθθ
类型的HIS分量图。
代码:
clear all;
close all;
X=imread('fudiao.jpg'); %读入图像
subplot(121);
imshow(X);title('灰度图像'); %显示原始图像
X=im2uint8(X); %将图像转化为int8类型[M,N]=size(X); %求得矩阵的维度
%生成RGB矩阵
R=zeros(M,N);
G=zeros(M,N);
B=zeros(M,N);
%建立灰度值与RGB分量之间的变换关系
for p=1:M
for k=1:N
if(X(p,k)<128)
R(p,k)=128;
elseif(X(p,k)<192)
R(p,k)=4*X(p,k)-511;
else
R(p,k)=255;
end
if(X(p,k)<64)
B(p,k)=255;
elseif(X(p,k)<128)
B(p,k)=511-4*X(p,k);
else
B(p,k)=0;
end
if(X(p,k)<64)
G(p,k)=4*X(p,k);
elseif(X(p,k)<192)
G(p,k)=255;
else
G(p,k)=1023-4*X(p,k);
end
end
end
Z=cat(3,R,G,B); %合并三个分量
Subplot(122);
imshow(Z); %显示伪彩色图
title('伪彩色图像');
%%%%%%%%%%%%%
%显示一幅图的RGB分量和HIS分量
clear all;
close all;
X=imread('tower.jpg');
X=im2uint8(X); %将图像转化为int8类型figure(1);
title('原始图像'); %显示原始图像
imshow(X);
XR=X(:,:,1); %分离出RGB分量
XG=X(:,:,2);
XB=X(:,:,3);
figure(2);
subplot(2,3,1);
imshow(XR);
%显示RGB分量图
title('R分量');
subplot(2,3,2);
imshow(XG);
title('G分量');
subplot(2,3,3);
imshow(XB);
title('B分量');
%HSI分量
X=im2double(X);
XR=X(:,:,1);
XG=X(:,:,2);
XB=X(:,:,3);
%根据RGB分量和HIS分量间的变换关系求得HIS分量num=0.5*((XR-XG)+(XR-XB));
den=sqrt((XR-XG).^2+(XR-XB).*(XG-XB)); theta=acos(num./(den+eps));
if(XG>=XB)
H=theta;
else
H=2*pi-theta;
end
I=(XR+XG+XB)./3;
num=min(min(XR,XG),XB);
den=XR+XG+XB;
den(den==0)=eps;
S=1-3.*num./den;
M=cat(3,H,S,I);%合并三个分量
M=im2uint8(M);%将图像转化为8bit类型