2011-12-14 15:41:23 honesty2008 阅读数 8306

一.实验题目

参照下图编程实现RGB与HIS彩色空间分割,并对分割结果进行比较。

二.实验分析

本实验主要考查彩色图像分割,由于RGB图像、HIS图像间的相互转换过程

比较复杂,实现起来代码比较长,本实验通过rgb2hsv进行转换,HIS和HSV图像

还是有一定的区别的,但影响不是很大。处理过程大致如下:

①将rgb图像转换成his图像

②将his的h和s分量做点乘运算

③设置参数,生成阈值图像

④将阈值图像与rgb,his图像相乘便得到分割图像。

三.实验程序

clear;clc;
I=imread('images_chapter_06\Fig6.28(b).jpg');
subplot(2,2,1);imshow(I);xlabel('original image');
I1=rgb2hsv(I);scale=0.5;
I2=I1(:,:,1).*I1(:,:,2);
m=I2>max(max(I2))*scale;
for u=1:3
    I(:,:,u)=I(:,:,u).*uint8(m);
end
% T=max(I(:))*scale;I11=double(I);
% I11(:,:,1)=I11(:,:,1).*double(I11(:,:,1)>T);
% I11(:,:,2)=I11(:,:,2).*double(I11(:,:,2)>T);
% I11(:,:,3)=I11(:,:,3).*double(I11(:,:,3)>T);
subplot(2,2,3);imshow(I,[]);xlabel('RGB segmentation');
I3=double(m);
I1(:,:,1)=I1(:,:,1).*I3;
I1(:,:,2)=I1(:,:,2).*I3;
I1(:,:,3)=I1(:,:,3).*I3;
subplot(2,2,4);imshow(I1,[]);xlabel('HSV segmentation');
% figure;imshow(I11,[]);

 
四.实验结果

       由于红色区域亮度比较大,且和其他部分相差较大,因此,经过运算就将红色部分分割出来了。

在进行rgb分割时也可以不借助hsv的分量进行处理,用rgb的最大亮度的scale倍作为分割点。



2019-10-07 16:56:21 qq_39653453 阅读数 36

cat的实验结果如下

 

%若RGB图像时double 他的取值范围时0 - 1
%uint8  255   u16  65535
%RGB也可以看成是三幅灰度图形成的堆 将其送入彩色监视器的红绿蓝输入端 就产生颜色了
%RGB图像使用 cat 级联来合成彩色图像
% rgb_image=cat(3,fR,fG,fB)  cat的第一个参数代表方向  实验如下
%fR=rgb_image(:,:,1)  fG 2 Fb 3

f=imread('D:MATLAB图像处理\亮度调节与空间滤波\1.jpg');
f1=f(:,:,1);
f2=f(:,:,2);
f3=f(:,:,3);
f11=cat(1,f1,f2,f3);
f22=cat(2,f1,f2,f3);
f33=cat(3,f1,f2,f3);
subplot(3,1,1)
imshow(f11)
subplot(3,1,2)
imshow(f22)
subplot(3,1,3)
imshow(f33)

2018-05-26 19:24:22 klaus_x 阅读数 1523

数字图像处理 实验2

基本实验1

理解傅里叶谱和相位谱在视觉中的作用
程序代码:

clear;
RGB=imread('yangmi.bmp');%个人照片
I=rgb2gray(RGB); %x=rgb2gray(I);%彩色转灰度
figure;
subplot(221); imshow(I);
title('原始图像')
fi = fftshift(fft2(I));
fi_magn = abs(fi);
subplot(222); imshow(log(1+fi_magn),[]);
title('频谱图像');
fi_angl = angle(fi);
subplot(223);imshow(fi_angl,[]);
title('相位图像');
fi_shape = fi./fi_magn;
i_shape = ifft2(ifftshift(fi_shape));
subplot(224);
imshow(i_shape,[]);
title('形状图像')

实验结果:
6
最后一张图,你们能看到杨幂的轮廓嘛???笑哭…笑哭

基本实验2:

对一副图像加入椒盐噪声后,实现2阶Butterworth低通滤波
程序代码如下:

clear;
RGB=imread('saturn.png');
I=rgb2gray(RGB);
subplot(221);imshow(I);title('原图')
I2 = imnoise(I,'salt & pepper');
subplot(222);imshow(I2);title('噪声图像');
[row,col]=size(I);
P = row*2;    Q = col*2;
f = zeros(P,Q);
f(1:row,1:col) = double(I2);
g = fft2(f);
g = fftshift(g);
result_ideal = zeros(P,Q);
result_buter = zeros(P,Q);
N = 2;%巴特沃斯滤波阶数
D0 = 50;%滤波半径
center_x = fix(P/2);
center_y = fix(Q/2);
tic;
for i=1:P
    for j=1:Q
        d_uv = sqrt((i-center_x)^2+(j-center_y)^2);
        h_ij = 1/(1+(d_uv/D0)^(2*N));
        result_buter(i,j) = h_ij*g(i,j);
        if(d_uv>D0)
            result_ideal(i,j)=0;
        else
            result_ideal(i,j)=g(i,j);
        end
    end
end
toc;
result_ideal = ifftshift(result_ideal);
result_buter = ifftshift(result_buter);
X1 = ifft2(result_buter);X2=uint8(real(X1));
result_B = X2(1:row,1:col);
subplot(223);imshow(result_B);
title('Butterworth滤波结果');
X3 = ifft2(result_ideal);X4=uint8(real(X3));
result_I = X4(1:row,1:col);
subplot(224);imshow(result_I);
title('理想滤波器滤波结果');

实验现象图
7
实验二涉及的数据比较多,博主建议给小一点的图像,也就是画质低一点的,上面这种图大概运行了大概运行了5秒左右(不能忍有木有!!!);同时为了加快速度,也可以提前对迭代的数组赋值,减少运行时间。

基本实验3

对一幅图像moon.tif实现高斯高频强调滤波
程序代码:

clear;
I = imread('chest_xray.tif');
figure;
subplot(221);imshow(I);title('原始图像');
%%
D0=40;
k1=0.5;
k2=0.75;
%%
[row,col]=size(I);
P = row*2;Q=col*2;
f = zeros(P,Q);
f(1:row,1:col)=double(I);
g=fft2(f);
g=fftshift(g);
center_x=fix(P/2);
center_y=fix(Q/2);
tic;

for i=1:P
    for j=1:Q
        duv2=(i-center_x)^2+(j-center_y)^2;
        h_uv=1-exp((-duv2/(2*D0*D0)));
        h_ij=k1+k2*h_uv;
        result_hp(i,j)=h_uv*g(i,j);
        result_hb(i,j)=h_ij*g(i,j);
    end
end

toc;
result_hp = uint8(real(ifft2(ifftshift(result_hp))));%进行反变换
result_hb = uint8(real(ifft2(ifftshift(result_hb))));%进行反变换
result_hp2=result_hp(1:row,1:col);
subplot(222);imshow(result_hp2);
title('高斯高通滤波图像')
result_hb2=result_hb(1:row,1:col);
subplot(223);imshow(result_hb2);
title('高频强调图像');
resutlt_histeq=histeq(result_hb2);
subplot(224);
imshow(resutlt_histeq
);
title('经过直方图均衡化的结果')

实验现象结果
8

思考题

已知一同态滤波器的传输特性曲线如下图所示
9
该滤波器的传递函数为:

H(u,v)=(γHγL)[1ec[D2(u,v)D02]]+γL

设参数γH=2,γL=0.25,c=1,D0=80
使用该同态滤波器对下图进行处理,编写M文件。
程序源码:

clear;
I = imread('moon.tif');
subplot(121);imshow(I);title('原图')
%%--------------------------
result_tt(1000,1000)=0;
rL=0.25;
rH=2;
c=1;
%%---------------------------
[row,col]=size(I);
P = row*2;    Q = col*2;
f = zeros(P,Q);
f(1:row,1:col)=double(I);
g = fft2(f);
g = fftshift(g);
D0 = 80;
center_x = fix(P/2);
center_y = fix(Q/2);
tic;
for i=1:P
    for j=1:Q
        d_uv = sqrt((i-center_x)^2+(j-center_y)^2);
        tmp=1-exp(c*(d_uv*d_uv/D0*D0));
        h_ij = (rH-rL)*tmp+rL;
        result_tt(i,j) = h_ij*g(i,j);
        if(d_uv>D0)
            result_tt(i,j)=g(i,j);
        else
            result_tt(i,j)=0;
        end
    end
end
toc;
result_tt = ifftshift(result_tt);
X1 = ifft2(result_tt);X2=uint8(real(X1));
result_B = X2(1:row,1:col);
subplot(122);imshow(result_B);
title('同态滤波结果');

实验结果:
10
如果需要下载我的文件的话,这里是程序源码和思考题的代码和文件夹的下载链接
下载文件为压缩包形式。

2016-11-21 23:24:14 hzh_csdn 阅读数 7110

转载请注明来自我的CSDN博客:黄朝辉的博客

读入一幅彩色图像,进行如下图像处理:

(1) 在RGB彩色空间中对图像进行模糊和锐化处理

rgb= imread('flower.jpg');
figure;  imshow(rgb); title('原图');
 %平滑滤波  
r=rgb(:,:,1);  
g=rgb(:,:,2); 
 b=rgb(:,:,3); 
m=fspecial('average',[8,8]); 
 r_filtered=imfilter(r,m);
 g_filtered=imfilter(g,m); 
 b_filtered=imfilter(b,m);  
 rgb_filtered=cat(3,r_filtered,g_filtered,b_filtered); 
 figure;  imshow(rgb_filtered);  title('模糊后');
imwrite(rgb_filtered, 'RGB彩色空间模糊后.jpg');

彩色空间模糊后
RGB彩色空间模糊后

%拉普拉斯
lapMatrix=[1 1 1;1 -8 1;1 1 1];    
  i_tmp=imfilter(rgb,lapMatrix,'replicate'); 
 i_sharped=imsubtract(rgb,i_tmp); 
 figure;   imshow(i_sharped); title('锐化后');
imwrite(i_sharped, 'RGB彩色空间锐化后.jpg');

RGB彩色空间锐化后
RGB彩色空间锐化后

(2) 在HSI彩色空间中,对H分量图像进行模糊和锐化处理,转换回RGB格式并观察效果

(3) 在HSI彩色空间中,对S分量图像进行模糊和锐化处理,转换回RGB格式并观察效果

(4) 在HSI彩色空间中,对I分量图像进行模糊和锐化处理,转换回RGB格式并观察效果

fc = imread('flower.jpg');
h = rgb2hsi(fc);
H = h (:,:,1);
S = h (:,:,2);
I = h (:,:,3);

subplot(3,3,1);imshow(fc);  title('原图');

原图
原图

%平滑滤波 
m=fspecial('average',[8,8]); 
h_filtered=imfilter(H,m);
img_h_filtered = cat(3,h_filtered,S,I); 
rgb_h_filtered = hsi2rgb(img_h_filtered);
subplot(3,3,2);imshow(rgb_h_filtered);  title('H分量模糊后');
imwrite(rgb_h_filtered, 'H分量模糊后.jpg');

H分量模糊后
H分量模糊后

%拉普拉斯
lapMatrix=[1 1 1;1 -8 1;1 1 1];    
i_tmp=imfilter(H,lapMatrix,'replicate'); 
H_sharped=imsubtract(H,i_tmp); 
img_h_sharped = cat(3,H_sharped,S,I); 
rgb_h_sharped = hsi2rgb(img_h_sharped);
subplot(3,3,3); imshow(rgb_h_sharped); title('H分量锐化后');
imwrite(rgb_h_sharped, 'H分量锐化后.jpg');

H分量锐化后
H分量锐化后

subplot(3,3,4);imshow(fc);  title('原图');
%平滑滤波 
m=fspecial('average',[8,8]); 
s_filtered=imfilter(S,m);
img_s_filtered = cat(3,H,s_filtered,I); 
rgb_s_filtered = hsi2rgb(img_s_filtered);
subplot(3,3,5);imshow(rgb_s_filtered);  title('S分量模糊后');
imwrite(rgb_s_filtered, 'S分量模糊后.jpg');

S分量模糊后
S分量模糊后

%拉普拉斯
lapMatrix=[1 1 1;1 -8 1;1 1 1];    
i_tmp=imfilter(S,lapMatrix,'replicate'); 
s_sharped=imsubtract(S,i_tmp); 
img_s_sharped = cat(3,H,s_sharped,I); 
rgb_s_sharped = hsi2rgb(img_s_sharped);
subplot(3,3,6); imshow(rgb_s_sharped); title('S分量锐化后');
imwrite(rgb_s_sharped, 'S分量锐化后.jpg');

S分量锐化后
S分量锐化后

subplot(3,3,7);imshow(fc);  title('原图');
%平滑滤波 
m=fspecial('average',[8,8]); 
i_filtered=imfilter(I,m);
img_i_filtered = cat(3,H,S,i_filtered); 
rgb_i_filtered = hsi2rgb(img_i_filtered);
subplot(3,3,8);imshow(rgb_i_filtered);  title('I分量模糊后');
imwrite(rgb_i_filtered, 'I分量模糊后.jpg');

I分量模糊后
I分量模糊后

%拉普拉斯
lapMatrix=[1 1 1;1 -8 1;1 1 1];    
i_tmp=imfilter(I,lapMatrix,'replicate'); 
i_sharped=imsubtract(I,i_tmp); 
img_i_sharped = cat(3,H,S,i_sharped); 
rgb_i_sharped = hsi2rgb(img_i_sharped);
subplot(3,3,9); imshow(rgb_i_sharped); title('I分量锐化后');
imwrite(rgb_i_sharped, 'I分量锐化后.jpg');

I分量锐化后
I分量锐化后

2013-05-05 13:32:06 ricky_hust 阅读数 3235

最近在学习数字图像处理,在matlab实验中多次看到index image,rgb image,gray image....以及rgb2gray(),ind2gray()函数,很好奇索引图像和RGB图像有什么区别,上网查了写资料,发现了索引图像和RGB图像都是彩色图像的表示方式,算是一种原始数据的表示标准吧,位图图像和矢量图像是具体存储在硬盘上的两种方法,位图图像更接近raw data的表示,矢量图像是提取图像中的特征通过特征来表示,算是一种更加高级的图像的表示存储方式吧!

在计算机中,按照颜色和灰度的多少可以将图像分为二值图像、灰度图像、索引图像和真彩色RGB图像四种基本类型。目前,大多数图像处理软件都支持这四种类型的图像。

(1) 二值图像:
一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

2) 灰度图像:
灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[0,1],0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。

(3) 索引图像:
索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256Ⅹ3,用MAP=[RGB]表示。MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。索引图像的数据类型一般为8位无符号整形(int8),相应索引矩阵MAP的大小为256Ⅹ3,因此一般索引图像只能同时显示256种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双精度浮点型(double)。索引图像一般用于存放色彩要求比较简单的图像,如Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。

(4) RGB彩色图像:
RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。


数字化图像数据有两种存储方式:位图存储(Bitmap)和矢量存储(Vector)
我们平常是以图像分辨率(即象素点)和颜色数来描述数字图象的。例如一张分辨率为640*480,16位色的数字图片,就由2^16=65536种颜色的307200(=640*480)个素点组成。

位图图像(Bitmap):位图方式是将图像的每一个象素点转换为一个数据。
当图像是单色(只有黑白二色)时,8个象素点的数据只占据一个字节(一个字节就是8个二进制数,1个二进制数存放象素点);16色(区别于前段“16位色”)的图像每两个象素点用一个字节存储;256色图像每一个象素点用一个字节存储。这样就能够精确地描述各种不同颜色模式的图像图面。位图图像弥补了矢量式图像的缺陷,它能够制作出色彩和色调变化丰富的图像,可以逼真地表现自然界的景象,同时也可以很容易地在不同软件之间交换文件,这就是位图图像的优点;而其缺点则是它无法制作真正的3D图像,并且图像缩放和旋转时会产生失真的现象,同时文件较大,对内存和硬盘空间容量的需求也较高。位图方式就是将图像的每一像素点转换为一个数据。如果用1位数据来记录,那么它只能代表2种颜色(2^1=2);如果以8位来记录,便可以表现出256种颜色或色调(2^8=256),因此使用的位元素越多所能表现的色彩也越多。通常我们使用的颜色有16色、256色、增强16位和真彩色24位。一般所说的真彩色是指24位(2^24)的位图存储模式适合于内容复杂的图像和真实照片。但随着分辨率以及颜色数的提高,图像所占用的磁盘空间也就相当大;另外由于在放大图像的过程中,其图像势必要变得模糊而失真,放大后的图像像素点实际上变成了像素“方格”。 用数码相机和扫描仪获取的图像都属于位图。

矢量图像(Vector):矢量图像存储的是图像信息的轮廓部分,而不是图像的每一个象素点。例如,一个圆形图案只要存储圆心的坐标位置和半径长度,以及圆的边线和半径长度,以及圆的边线和内部的颜色即可。该存储方式的缺点是经常耗费大量的时间做一些复杂的分析演算工作,图像的显示速度较慢;但图像缩放不会失真;图像的存储空间也要小得多。所以,矢量图比较适合存储各种图表和工程


没有更多推荐了,返回首页