• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

数字图像处理及MATLAB实现实验一

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、图像文件的读写

1.colorbar函数将颜色条添加到坐标轴对象中

%colorbar函数将颜色条添加到坐标轴对象中
RGB=imread(\'drum.bmp\')  %图像读入
I=rgb2gray(RGB);    %把RGB图像转化为灰度图像
h=[1 2 1;0 0 0;-1 -2 -1];   
I2=filter2(h,I);    %使用指定的滤波器h对I进行滤波,结果保存在I2中
imshow(I2,[]),colorbar(\'vert\')  %将颜色条添加到坐标轴的对象中
                                %vert--垂直,horiz--水平

 

2.warp将图像图像进行文理映射

%warp将图像图像进行文理映射
A=imread(\'drum.bmp\');
I=rgb2gray(A);
[x,y,z]=sphere;
warp(x,y,z,I);  %用warp函数将图像作为纹理进行映射

 

3.subimage函数实现在一个图形窗口内显示多幅图像

%subimage函数实现在一个图形窗口内显示多幅图像
RGB=imread(\'drum.bmp\');
I=rgb2gray(RGB);
subplot(1,2,1),subimage(RGB) 
subplot(1,2,2),subimage(I)  %subplot(1,2,1)是指一个1行2列的图中从左到右从上到下第1个位置

 

 

二、图像处理的基本操作

1)图像代数运算

1.imadd函数实现两幅图像的相加或者给一幅图像加上一个常数

I=imread(\'drum.bmp\');
J=imadd(I,100); %给图像增加亮度
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 

2.imsubtract函数实现将一幅图从另外一幅图像中减去,或者从一幅图像中减去一个常数

I=imread(\'drum.bmp\');
J=imsubtract(I,100); %给图像减少亮度
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 

3.immultiply函数实现两幅图像的相乘或者一幅图像亮度的缩放

I=imread(\'drum.bmp\');
J=immultiply(I,0.5); %给图像进行亮度缩放
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 

 

4.imdivide函数实现两幅图像的除法或者一幅图像或一幅图像亮度的缩放

I=imread(\'drum.bmp\');
J=imdivide(I,0.5); %给图像进行亮度缩放
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 

2)图像空间域操作

1.imresize函数实现图像的缩放

I=imread(\'drum.bmp\');
J=imresize(I,5); %给图像进行缩放
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 

2.imrotate函数实现图像的旋转

I=imread(\'drum.bmp\');
J=imrotate(I,45,\'bilinear\'); %对图像进行旋转 
%围绕图像中心旋转angle度,正表示逆时针旋转,负表示正时针旋转。
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 

3.imcrop函数实现图像的剪切

I=imread(\'drum.bmp\');
J=imcrop(I,[75 68 130 112]); %对图像进行剪切 
%[xmin,ymin,wight,height]
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 

 

3)特定区域处理

1.roipoly函数用于选择图像中的多边形区域

I=imread(\'drum.bmp\');
c=[200 250 278 248 199 172];
r=[21 21 75 121 121 75];
J=roipoly(I,c,r);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);

 

 

2.roicolor函数是对RGB图像和灰度图像实现按灰度值或亮度值选择区域进行处理

a=imread(\'drum.bmp\');
I=rgb2gray(a);
J=roipoly(I,128,225);   %按灰度值选择的区域
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);

 

 

3.poly2mask函数转化指定的多边形区域为二值掩模

x=[63 186 54 190 63];
y=[60 60 209 204 60];
I=poly2mask(x,y,256,256); %转化指定的多边形区域为二值掩模
imshow(I);
hold on  %打开图形保持功能
plot(x,y,\'b\',\'LineWidth\',2);
%plot(x,y,\'r\',\'limewidth\',4);线条粗细;r-红色,g-绿色,b-蓝色,c-青色,m-紫色,k-黑色,w-白色,y-黄色
hold off  %关闭图形保持功能

 

4.roifilt2函数实现区域滤波

a=imread(\'drum.bmp\');
I=rgb2gray(a);
c=[200 250 278 248 199 172]
r=[21 21 75 121 121 75]
BW=roipoly(I,c,r);  %roipoly函数用于选择图像中的多边形区域
h=fspecial(\'unsharp\');  %unsharp为对比度增强滤波器
J=roifilt2(h,I,BW); %区域滤波
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

 5.roifill函数实现对特定区域进行填充

a=imread(\'drum.jpg\');
I=rgb2gray(a);
c=[200 250 278 248 199 172]
r=[21 21 75 121 121 75]
J=roifill(I,c,r);   %roifill函数实现对特定区域进行填充
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(J)

 

4)图像变换

1.fft2函数和ifft2函数分别是计算二维的快速傅里叶变换和反变换

f=zeros(100,100);
f(20:70,40:60)=1;
imshow(f);
F=fft2(f);
F2=log(abs(F));
imshow(F2),colorbar
subplot(1,2,1),imshow(f)

 

2.edge函数用于提取图像的边缘,radon函数用来计算指定方向上图像矩阵的投影

% 2.edge函数用于提取图像的边缘,radon函数用来计算指定方向上图像矩阵的投影
RGB=imread(\'drum.bmp\');
I=rgb2gray(RGB);
BW=edge(I)
figure,imshow(BW)
theta=0:179;    %角度从1取到179,这样randon就得到了不同角度下的径向上的图像场强值,即R矩阵。
[R,xp]=radon(BW,theta); %图像矩阵的投影  %R是点的数量的多少,xp是对应的坐标位置,xp只是对应的角度,跟theta一样
figure,imagesc(theta,xp,R);colormap(hot);
xlabel(\'\theta(degrees)\');  %对x轴加标题
ylabel(\'x\prime\');  %对y轴加标题
title(\'R_{\theta}(x\prime)\');   %对图像加标题
colorbar  %颜色映射

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
数值分析实验之数值积分法(MATLAB代码)发布时间:2022-07-18
下一篇:
Rust教程:Rust语言入门发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap