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

xiaoxiao2021-02-28  47

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); 也是对每个像素点的操作。

转载请注明原文地址: https://www.6miu.com/read-82299.html

最新回复(0)