实验一图像增强实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一图像增强实验

实验目的:1.掌握图像增强的算法

2.学习利用MATLAB进行图像的增强

实验内容:1.图像的点操作、邻域操作算法

2.图像的直方图处理算法

实验步骤:

1.读入图像,用MATLAB函数实现图像读入

(1)启动MATLAB

(2)在命令行窗口直接输入MATLAB命令,按“回车”键后执行(3)读入命令和显示命令分别为 imread 和 imshow

(4)如A=imread('D:\上官军\medical image\woman.jpg')

Imshow (A)

结果显示

2.实现图像点操作运算(gamma校正和对数校正)(1)根据图像线形变换三种形式,图像反转 S=L-1-r 、对数变换S=c*log(1+r) 、幂次变换 S=c*r .^γ编写图像点操作函数

(2)建立新的M文件,点操作函数代码如下:

function s=dian(r,leixing,chengshu,gamma1)

% r为处理图像,leixing为操作类型

s1=imread(r);

s2=im2double(s1);

%将图像转为double数据型

switch leixing

case 'fanzhuan'

s=1-s2;

case 'duishu'

s=chengshu*log(1+s2);

case 'gamma'

s=chengshu*s2.^gamma1;

otherwise

error('错误')

end

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

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

(3)实际操作,如反转:

Y=dian('D:\上官军\medical image\woman.jpg','fanzhuan',1,1);

3.图像邻域处理

(1)图像邻域处理是通过设计相应的滤波器来处理相邻图像像素,主要为均值滤波器、中指滤波器、高斯滤波器等

(2)建立新的M文件,均值滤波函数代码如下:

function d=avefilt(x,n)

a(1:n,1:n)=1;

%a即n×n模板,元素全是1

p=size(x);

%输入图像是p×q的

x1=double(x);

%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素for i=1:p(1)-n+1

for j=1:p(2)-n+1

c=x1(i:i+(n-1),j:j+(n-1)).*a;

%取出x1中从(i,j)开始的n行n列元素与模板相乘

s=sum(sum(c));

%求c矩阵(即模板)中各元素之和

x1(i+(n-1)/2,j+(n-1)/2)=s/(n*n);

%将模板各元素的均值赋给模板中心位置的元素

end

end

d=uint8(x1);

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

title('均值滤波前图像');

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

title('均值滤波后图像');

(3)实际操作,代码如下:

A=imread('D:\上官军\medical image\woman.jpg');

Y=avefilt(A,3);

滤波前图像滤波后图像

4.直方图的均衡处理

(1)图像直方图利用MATLAB工具箱中imhist产生,根据直方图均衡计算公式:

编写直方图均衡函数

(2)建立新的M文件,直方图均衡代码如下:

function s=zhifangtu(r)

s1= r;

[m,n]=size(s1);

%检测图像大小

count=0;

s2=zeros(m,n);

% s2是行列分别为m、n的0矩阵s3=zeros(1,255);

figure,imhist(s1);

[counts]=imhist(s1);

for k=1:255

count=count+counts(k); s3(k)=255*count/(m*n); end

%根据直方图均衡公式编写

for x=1:m

for y=1:n

s2(x,y)=s3(s1(x,y)+1); end

end

s=s2;

s=mat2gray(s);

s=im2uint8(s);

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

title('均衡后的图片');

subplot(1,2,2),imhist(s);

title('均衡后的直方图');

(3)实际操作,代码如下:

A=imread('D:\上官军\medical image\woman.jpg'); Y=zhifangtu(A)

均衡后的图片

050100150200250

均衡后的直方图

.

相关文档
最新文档