[Matlab]数字图像处理实验和Matlab的使用

1、灰度线性变换

变换函数为 :s = a r + b设计程序,实现(a>1,b=0)、(0<a<1, b=0)、(a=1,b>0)和(a=1,b<0)等情况下的灰度变换处理,并比较处理前后的图像效果。

Matlab(matrixlab)矩阵实验室,在我的理解中matlab对灰度图片的提取即将其每个像素点的灰度提取,组成矩阵。

matlab代码:

R=imread('boats.bmp');
 [m,n]=size(R) 
figure, imshow(R);     
title('aerial.bmp');  
S1=R*3; 
figure;
subplot(121);
imshow(S1);
subplot(122);
plot(R,S1);
N=im2double(R);   
S2=N*0.5; 
figure;
subplot(121);
imshow(S2);
subplot(122);
plot(N,S2);
S3=R+10; 
figure;
subplot(121);
imshow(S3);
subplot(122);
plot(R,S3);

由于是线性变换,对于矩阵而言就是可以直接进行线性变换。

这里显示一个运行后的范例。

2灰度非线性变换

设计程序,实现图像的指数变换和对数变换。

这里是非线性的变换,对于上面的整体进行变换的方式我认为并不可取,例如矩阵的指数变换,涉及矩阵相乘,而线性代数中说明了矩阵相乘的要求,左矩阵的行数等于右矩阵的列数,而图片的像素问题不能保证,因此要对每个像素点进行操作。

指数部分代码:

f=imread('boats.bmp');
[M,N]=size(f);
g=zeros(M,N);
f=double(f);
g=double(g);
for i=1:M
for j=1:N
g(i,j)=f(i,j)^10;
end
end
figure;
subplot(121);
imshow(uint8(g));
subplot(122);
plot(f,g);

对数部分只要修改其中关键行即可。

3.邻域平均

设计程序,实现3×3邻域平均和7×7邻域平均的平滑处理。观察处理前后图像效果,分析实验结果。

对图片的每个固定区域的像素取值都取其区域的平均值。

例7*7均值

代码:

f=imread('boats.bmp');
[M,N]=size(f);
g=zeros(M,N);
yu=0;
yu=double(yu);
f=double(f);
g=double(g);
for i=1:M-7
	for j=1:N-7
		for x=i:i+6
			for y=j:j+6
				yu=yu+f(x,y);
			end;
		end;
		for x=i:i+6
			for y=j:j+6
				g(x,y)=yu/49;
			end;
		end;
		yu=0;
		j=j+6;
	end;
    i=i+6;
end;
figure;
subplot(121);
imshow(uint8(g));
subplot(122);
plot(f,g);
也是对每个像素点的操作。




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值