数字图像处理实验作业

发布 2022-07-18 20:49:28 阅读 1533

实验一。

读取一幅图像,完成如下操作,并存储变换后的图像。

1) 把图像翻转90度,并显示。

2) 缩小图像为原图像的1/2

3) 镜像图像。

原图像:clc;

clf;clear;

f=imread('d:\matlab\')读取d盘中matlab文件夹中名字为picture的格式为jpg的**。

figure,imshow(f)

k=imrotate(f,90正数表示逆时针旋转, 负数表示顺时针旋转。

figure,imshow(k)

imwrite(k,'d:\matlab\保存逆时针旋转90度后的图像。

逆时针旋转90度后图像:

x=0.5横向放2倍。如果想缩2倍就把x改为0.5即可,即变为0.5倍。

y=0.5纵向放2倍。如果想缩2倍就把y改为0.5即可,即变为0.5倍。

t1 = maketform('affine',[x 0 0; 0 1 0; 0 0 1]);

t2 = maketform('affine',[1 0 0; 0 y 0; 0 0 1]);

i1 = imtransform(k,t1);

i2 = imtransform(i1,t2);

figure, imshow(i2)

imwrite(i2,'d:\matlab\')保存缩小为原来1/2的图像。

缩小图像为原图像的1/2

img=rgb2gray(i2取图像i2的灰度图像

subplot(1,2,1),imshow(im**平镜像。

m,n]=size(img);

p=1:m;q=1:n;

z(p,n-q+1)=img(p,q);

subplot(1,2,2),imshow(z);

imwrite(z,'d:\matlab\保存镜像后的图像。

镜像后的图像:

实验二。读取一幅彩色图像,并将图像转化为二值图像,在一张图表上,显示原始图像,灰度图像,二值图像。

原图像:clc;

clf;clear;

f=imread('d:\matlab\')读取d盘中matlab文件夹中名字为picture的格式为jpg的**。

a=im2bw(f取图像的二值图像。

m=islogical(a检测a是否为二值数组,如果是m=1,反之m=0.

img=rgb2gray(f取原图像的灰度图像。

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

subplot(1,3,2),imshow(img),title('灰度图像');

subplot(1,3,3),imshow(a),title('二值图像');

实验三。任意选择一幅图像,绘制图像的直方图。

clc;clf;

clear;

f=imread('d:\matlab\')读取d盘中matlab文件夹中名字为picture的格式为jpg的**。

计算灰度图象的直方图数据

l=256; %灰度级

ps = zeros(l,1); 统计直方图结果数据。

nk=zeros(l,1);

row,col]=size(f);

n=row*col; %总像素个数

for i = 1:row

for j = 1:col

num = double(f(i,j))+1; %获取像素点灰度级

nk(num) =nk(num)+1; %统计nk

end end

计算直方图概率估计

for i=1:l

ps(i)=nk(i)/n;

end figure;

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

subplot(3,1,2),plot(nk),title('直方图(nk)')

subplot(3,1,3),plot(ps),title('直方图(ps)')

实验四。构造一幅黑白二值图像,在128*128的黑色背景中心产生一个4*4的白色方块,完成下列操作:

1) 对图像作傅里叶变换,显示频域振幅图像。

2) 对原始图像进行运动模糊,显示其频谱图。

构造一幅黑白二值图像,在128*128的黑色背景中心产生一个4*4的白色方块。

clc;clear;

l=128;

a=zeros(128,128);

for m=63:66

for n=63:1:66;

a(m,n)=1;

endend

clf;subplot(1,3,1),imshow(a),title('原图像');显示该图像。

k=fftshift(fft2(a));

s=ifft2(k);

subplot(1,3,2),plot(abs(s)),title('二维傅立叶变换')

subplot(1,3,3),imshow(s,title('逆变换后的图像')

对原始图像‘a’做水平,长度为20像素的匀速直线运动模糊。

实验五。读入一幅图像,按下列要求完成matlab实验。

1) 分别模拟生成运动模糊、散焦模糊图像。

2) 对模糊图像进行逆滤波法和维纳滤波复原。

3) 显示复原结果,比较算法的不同点。

clc;clf;

clear;

f=imread('d:\matlab\')读取d盘中matlab文件夹中名字为picture的格式为jpg的**。

len=10;

theta=20;

h1=fspecial('motion',len,theta);

j=imfilter(f,h1,'circular','conv');

h2= fspecial('disk',10);

i1 = imfilter(f, h2, 'replicate');

figure,subplot(1,3,1),imshow(f),title('原始图像');

subplot(1,3,2),imshow(j),title('进行运动模糊后的图像');

subplot(1,3,3),imshow(i1),title('散焦模糊');

维纳处理。psf=fspecial('motion',len,theta);

wnr1=deconvwnr(j,psf,0);

figure,subplot(2,2,1),imshow(wnr1);

title('运动模糊后的维纳处理');

psf=fspecial('motion',len,theta);

wnr1=deconvwnr(i1,psf,0);

subplot(2,2,2),imshow(wnr1);

title('散焦模糊后的维纳处理');

对图像进行黑白处理。

p1=rgb2gray(j);

p2=rgb2gray(i1);

逆滤波处理。

m,n]=size(p1);

k=0.0025;

for u=1:m

for v=1:n

h(u,v)=exp((-k)*(u-m/2)^2+(v-n/2)^2)^(5/6)))

endend

q1=fftshift(fft2(p1));

r1=abs(ifft2(fftshift(q1)))

subplot(2,2,3),imshow(uint8(r1)),title('运动逆滤波处理');

m,n]=size(p2);

k=0.0025;

for u=1:m

for v=1:n

h(u,v)=exp((-k)*(u-m/2)^2+(v-n/2)^2)^(5/6)))

endend

q2=fftshift(fft2(p2));

r2=abs(ifft2(fftshift(q2)))

subplot(2,2,4),imshow(uint8(r2)),title('散焦逆滤波处理');

实验证明,当退化图像的噪声较小,即轻度降质时,采用逆滤波恢复的方法可以获得较好的结果。通常,在离频率平面原点较远的地方数值较小或为零,因此图像恢复在原点周围的有限区域内进行,即将退化图像的傅立叶谱限制在没出现零点而且数值又不是太小的有限范围内。当噪声作用范围很大时,逆滤波不能从噪声中提取图像。

数字图像处理实验作业

数字图像处理。学院 电信学院。专业 信息工程。班级 2008级3班 姓名 朱志俊。学号 200830101124 实验作业4 1 用理想低通滤波器在频率域实现低通滤波。1 程序 i imread e 大三下 数字图像处理 matlab图像处理 水果 m,n size i figure imshow ...

数字图像处理作业

2017暑假小学期。专业。班级。姓名。学号。摘要 数字图像处理的目的是改善 质量,利用matlab设计几个简单的图像处理程序。该程序具备图像处理的日常功能 图像代数与几何运算 直方图与图像明暗关系分析 直方图均衡化 滤波器的使用与图像分割技术。通过运行 解释结合图像效果,分别介绍了处理原理与过程。关...

数字图像处理作业

图1是一张因拍摄时晃动而产生模糊的图像,试估计其psf并恢复图像。题中已明确此图是由于运动导致的模糊,所以采取课件上标准的恢复方法。首先,对 进行laplace滤波,是为了凸显图像中的高频部分,而后对图像进行radon变换以求出运动模糊的角度,由于角度标准和方向问题,需要将求出的角度减去90 也即。...