图像处理与分析实验指导文档格式.docx

上传人:b****6 文档编号:19127587 上传时间:2023-01-04 格式:DOCX 页数:34 大小:32.16KB
下载 相关 举报
图像处理与分析实验指导文档格式.docx_第1页
第1页 / 共34页
图像处理与分析实验指导文档格式.docx_第2页
第2页 / 共34页
图像处理与分析实验指导文档格式.docx_第3页
第3页 / 共34页
图像处理与分析实验指导文档格式.docx_第4页
第4页 / 共34页
图像处理与分析实验指导文档格式.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

图像处理与分析实验指导文档格式.docx

《图像处理与分析实验指导文档格式.docx》由会员分享,可在线阅读,更多相关《图像处理与分析实验指导文档格式.docx(34页珍藏版)》请在冰豆网上搜索。

图像处理与分析实验指导文档格式.docx

2002.

实验要求(设计要求)

按下列步骤设计和实现直方图均衡化:

列出原始图像的灰度级,其中L是灰度级的个数.

统计各灰度级的像素数目.

计算原始图像直方图各灰度级的频数,其中n为原始图像总的像素数目.

计算累积分布函数.

应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数:

其中,INT为取整符号

6.统计映射后各灰度级的像素数目.

7.计算输出直方图.

8.用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像.

实验(设计)仪器设备和材料清单

1.计算机1台/每人

考核形式

1.验收调试结果;

2.实验报告

实验报告要求

1.技术路线;

2.MATLAB程序;

3.运行结果;

4.心得体会

思考题

1.直方图均衡化的目的是使图像直方图尽可能地分布均匀,你有什么改进的思路

2.你是如何理解步骤5的

附录一:

MATLAB数字图像处理

MATLAB简介

1.1主要用途及特点

主要用途:

算法研究

主要特点:

语句功能强大;

不能生成可执行文件.

1.2MATLAB工作环境

1.2.1Matlab桌面

桌面包括5个子窗口:

命令窗口,工作空间窗口,当前目录窗口,历史命令窗口,一个或多个图形窗口(仅在用户显示图形式出现).

命令窗口是用户在提示符(>

>

)处键入MATLAB命令和表达式的地方,也是显示那些命令输出的地方.

工作空间窗口显示对话中创建的变量和它们的某些信息.

当前目录窗口显示当前目录的内容(即路径).

历史命令窗口包含用户已在命令窗口中输入的命令的纪录.

使用MATLAB编辑器创建M文件

1.2.3获得帮助

(1)help

(2)look

数字图像的读取,显示,保存,数据类型和图像类型,数据类型间的转换,图像类型间的转换

2.1图像的读取

语法:

imread('

filename'

说明:

读取图像

格式名称

描述

可识别扩展符

TIFF

加标记的图像文件格式

.tif,.tiff

JPEG

联合图像专家组

.jpg,.jpeg

GIF

图形交换格式

.gif

BMP

Windows位图

.bmp

PNG

可移植网络图形

.png

XWD

XWindow转储

.xwd

[M,N]=size('

给出一幅图像的行数和列数

2.2图像的显示

imshow(f,G)

imshow(f,[lowhigh])

imshow(f,[])

G是显示该图像的灰度级数;

小于或等于low的值都显示为黑色,大于或等于high的值都显示为白色.

[]自动将变量low设置为f的最小值,将high设置为f的最大值.

2.3图像的保存

imwrite(f,'

练习1

f=imread('

saturn.tif'

);

pillsetc.png

[M,N]=size(f);

g=imread('

trees.tif'

);

imshow(f);

figure,imshow(g);

%显示另一幅图像

imwrite(f,'

s2.jpg'

数据类型

名称

double

双精度浮点数,范围为-10exp(308)~10exp(308),8字节

uint8

无符号8比特整数,1字节

uint16

无符号16比特整数,2字节

uint32

无符号32比特整数,4字节

int8

有符号8比特整数,1字节

int16

有符号16比特整数,2字节

int32

有符号32比特整数,4字节

single

单精度浮点数,范围为-10exp(38)~10exp(38),4字节

char

字符

logical

值为0或1

四种常用类型:

double,uint8,char,logical.

图像类型

亮度图像

uint8类范围为[0255],double类归一化为[01]

二值图像

图像取值只有0和1的逻辑数组

索引图像

RGB图像

彩色图像

6数据类与图像类型间的转换

数据类间的转换

B=data_class_name(A)

举例:

若A是8位图像,则B=double(A)转换为双精度图像.

图像类型间的转换

函数名称

将输入转换为

有效的输入图像数据类

im2uint8

Logical,uint8,uint16和double

im2uint16

mat2gray

im2double

im2bw

uint8,uint16和double

练习2

f=[12;

34];

g=mat2gray(f);

%矩阵数据归一化,数据都变成0-1间的数

gb=im2bw(g,0.6)%0.6isathreshold(二值化的阀值)

亮度变换与空间滤波

3.1亮度变换函数

3.1.1基本亮度变换函数

g=imadjust(f,[low_inhigh_in],[low_outhigh_out],gamma)

将图像f中的亮度值影响到g中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值,low_in以下的值映射为low_out,high_in以上的值映射为high_out.

参数gamma指定了映射曲线的形状.

练习3

pout.tif'

imshow(f);

g1=imadjust(f,[01],[10]);

%f的矩阵必须是double型数据,此语句使原图像黑白颠倒。

figure,imshow(g1);

g2=imadjust(f,[0.50.75],[10],0.5);

%f的矩阵必须是double型数据

figure,imshow(g2);

对比度拉伸变换

对数变换方法:

g=c*log(1+double(f))

对数变换的一项主要应用是压缩动态范围,常用于傅里叶频谱显示.

练习4

F=fft2(f);

%FourierTransform

FC=fftshift(F);

%将变换原点移到频率矩形的中心.

imshow(abs(FC),[]);

S2=log(1+abs(FC));

figure,imshow(S2,[]);

对比度拉伸方法:

g=1./(1+(m./(double(f)+eps).^E)

eps是浮点数的相对精度,可避免f出现0值时的溢出现象.

3.2直方图处理与函数绘图

3.2.1生成并绘制图像的直方图

h=imhist(f,b)

p=imhist(f,b)/num1(f)

b是用于形成直方图的灰度级的个数.P是归一化直方图.

练习5

imhist(f);

直方图均衡化

g=histeq(f,nlev)

nlev是为输出图像制定的灰度级数.

练习6

tire.tif'

figure,imhist(f);

ylim('

auto'

%自动设定y轴坐标范围和刻度

g=histeq(f,256);

figure,imshow(g);

figure,imhist(g);

3.3空间滤波

3.3.1线性空间滤波

g=imfilter(f,w,filtering_mode,boundary_options,size_options)

w为滤波掩模

选项

滤波类型

'

corr'

滤波器通过使用相关来完成.该值是默认值.

conv'

滤波器通过使用卷积来完成

边界选项

P

输入图像的边界通过用值P来扩展.P的默认值为0.

replicate'

图像大小通过复制外边界的值来扩展.

symmetric'

图像大小通过反射其边界来扩展.

circular'

图像大小通过将图像看成是一个二维周期函数的一个周期来扩展

大小选项

full'

输出图像的大小与被扩展图像的大小相同

same'

输出图像的大小与输入图像的大小相同

练习7

w=ones(31);

%单位矩阵掩模

gd=imfilter(f,w);

imshow(gd,[]);

3.3.2非线性空间滤波

略.

3.4图像处理工具箱的标准空间滤波器

3.4.1线性空间滤波器

w=fspecial('

type'

parameter)

见下表

练习8

‘d:

/pic/33.jpg’

w4=fspecial('

laplacian'

0)

w8=[111;

1-81;

111];

g4=f-imfilter(f,w4,'

g8=f-imfilter(f,w8,'

figure,imshow(g4);

figure,imshow(g8);

3.4.2非线性空间滤波器

g=ordfilt2(f,order,domain)

使用邻域的一组排序元素中的第oder个元素来代替f中的每个元素,而该邻域则由domain中的非零元素指定.

g=medfilt2(f,[mn],padopt)

中值滤波器.padopt指定了三个可能的边界填充选项之一.

zeros'

(默认值).

镜像反射.

indexed'

double类图像,以1填充,否则以0填充.

练习9

eight.tif'

fn=imnoise(f,'

salt&

pepper'

0.2);

%加椒盐噪声

figure,imshow(fn);

gm=medfilt2(fn);

imshow(fn);

figure,imshow(gm);

J=wiener2(I,[mn],noise)

进行二维适应性去噪过滤处理(维纳滤波).

练习10

I=imread('

J=imnoise(I,'

gaussian'

0,0.005);

%加高斯噪声

K=wiener2(J,[55]);

imshow(J)

figure,imshow(K)

频域处理

在MATLAB中计算并可视化二维DFT

练习11

S=abs(F);

%计算傅里叶频谱

imshow(S,[]);

figure,imshow(abs(FC),[]);

频域滤波

注意事项

假设函数f(x,y)和h(x,y)的大小分别为A×

B和C×

D,为了避免卷积运算造成的折叠误差(即混叠失真),必须通过对f和g补零,构造两个大小均为P×

Q的扩充寒暑,才能在频率域中进行运算.其中,P,Q必须满足:

DFT滤波的基本步骤

对f和g进行补零.

对f和g分别进行傅里叶变换,得到频域F和H.

将变换乘以滤波函数

G=H.*F;

获得G的傅里叶逆变换的实部:

g=real(ifft2(G));

讲左上部的矩形修建为原始大小:

g=g(1:

size(f,1),1:

size(f,2));

练习12:

根据DFT滤波的基本步骤,进行编程实现.

从空间滤波器获得频率滤波器

H=fft2(h,M,N)

M,N是滤波器的行数和列数,由被滤波的图像大小决定,是补零

的结果.

H=freqz2(h,R,C)

计算FIR滤波器的频率响应.

练习13

h=[111;

H=freqz2(h,50,50);

在频率域中直接生成滤波器

练习题14:

编程实现在频率域中生成巴特沃兹低通滤波器(或高通滤波器,或高通强调滤波器).

形态学图像处理

5.1膨胀和腐蚀

5.1.1膨胀

A2=imdilate(A,B)

B是结构元(由0和1组成的矩阵).

练习15

A=imread('

broken_text.tif'

B=[010;

111;

010];

A2=imdilate(A,B);

imshow(A);

figure,imshow(A2);

5.1.2结构元的生成

se=strel(shape,parameter)

见下表.

5.1.3腐蚀

A2=imerode(A,B)

练习16

wirebond_mask.tif'

se=strel('

disk'

10);

A2=imerode(A,se);

figure,imshow(A2);

5.2膨胀和腐蚀的组合

5.2.1开运算和闭运算

C=imopen(A,B)和C=imclose(A,B)

练习17

shapes.tif'

square'

20);

fo=imopen(f,se);

figure,imshow(fo);

fc=imclose(f,se);

figure,imshow(fc);

击中击不中变换

C=bwhitmiss(A,B1,B2)

练习18

B1=strel([0000;

0111;

0110]);

B2=strel([1111;

1000;

1000]);

g=bwhitmiss(f,B1,B2);

imshow(g);

形态学函数

g=bwmorph(f,operation,n)

该函数可基于膨胀,腐蚀和查找表的组合实现许多有用的操作,n是一个用于指定将被重复操作次数的正整数.Operation说明见下表.

练习19

fingerprint_cleaned.tif'

G1=bwmorph(f,'

thin'

1);

G2=bwmorph(f,'

Ginf=bwmorph(f,'

Inf);

Fs=bwmorph(f,'

tskel'

figure,imshow(G1);

figure,imshow(G2);

figure,imshow(Ginf);

figure,imshow(Fs);

5.3标记连通分量

[L,num]=

conn用于指定连接类型(4连接获8连接),num给出所找到的连接分量总数,L成为标记矩阵.

练习20

objects.tif'

[L,n]=bwlabel(f);

[r,c]=find(L==3);

rbar=mean(r);

cbar=mean(c);

plot(cbar,rbar,'

Marker'

'

o'

MarkerEdgeColor'

k'

MarkerFaceColor'

'

MarkerSizer'

*'

w'

5.4形态学重构

out=imreconstruct(marker,mask)

由重构做开运算

练习21

f=imread('

book_text_bw.tif'

fe=imerode(f,ones(51,1));

fo=imopen(f,ones(51,1));

fobr=imreconstruct(fe,f);

figure,imshow(fe);

figure,imshow(fo);

figure,imshow(fobr);

填充孔洞

g=imfill(f,'

holes'

清除边界对象

g=imclearborder(f,conn)

图像分割

6.1点,线和边缘检测

6.1.1点检测

点检测模板w:

-1

8

检测方法:

g=abs(imfilter(double(f),w))>

=T

练习22

moon.tif'

w=[-1-1-1;

-18-1;

-1-1-1];

g=abs(imfilter(double(f),w));

T=max(g(:

));

T=T*0.9;

g=g>

=T;

线检测

水平模板,+45度模板,垂直模板,-45度模板.

练习23

w=[2-1-1;

-12-1;

-1-12];

figure,imshow(g);

使用edge函数的边缘检测

[g,t]=edge(f,'

method'

parameter)

g是一个逻辑数组,其值为:

在f中检测到边缘的位置为1,其他位置为零;

t是edge是用的阈值;

method为边缘监测器方法,可选为:

'

sobel'

prewit'

roberts'

log'

(LoG),'

zerocoss'

canny'

等;

parameter包含两部分:

T为指定的阈值,第二部分为dir(检测边缘的首选方向:

horizontal'

vertical'

both'

),或sigma(标准方差),或H(指定的滤波函数).

练习24

rice.tif'

[gsobel,t]=edge(f,'

figure,imshow(gsobel);

[glog,t]=edge(f,'

figure,imshow(glog);

[gcanny,t]=edge(f,'

figure,imshow(gcanny);

6.2使用Hough变换的线检测

练习25

设计与实现一个基于Hough变换的直线检测器.

6.3阈值处理

6.3.1全局阈值处理

T=graythresh(f)

T是阈值,归一化为0至1之间的值.

6.3.2局部阈值处理

通过一个形态学顶帽算子并对得到的结果使用graythresh来计算.

练习26

cell.tif'

T=graythresh(f);

G=f>

6.4基于区域的分割

6.4.1区域生长

6.4.2区域分裂和合并

练习27

设计与实现一个基于区域生长的分割程序.

6.5使用分水岭变换的分割

练习28

f=im

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1