数字图像BMP实验报告

数字图像BMP实验报告 本文关键词:实验,数字图像,报告,BMP

数字图像BMP实验报告 本文简介:数字图像处理实验1BMP文件读写实验报告姓名:康文杰学号:14020019指导教师:毋立芳目录一、实验要求:2二、实验环境:2三、实验代码及结果:31、实验13实验代码:3原图像:4输出结果:52、实验25实验代码5原图像:7输出图像:73、实验38实验代码:8原图像:10输出图像:11四、实验总结

数字图像BMP实验报告 本文内容:

数字图像处理

实验1

BMP文件读写

实验报告

姓名:康文杰

学号:14020019

指导教师:毋立芳

目录

一、实验要求:2

二、实验环境:2

三、实验代码及结果:3

1、实验13

实验代码:3

原图像:4

输出结果:5

2、实验25

实验代码5

原图像:7

输出图像:7

3、实验38

实验代码:8

原图像:10

输出图像:11

四、实验总结:12

一、实验要求:

1、

打开1.BMP文件,输出图像中任意一个为5*5矩形区域对应的图像数据,并以文本文件的方式输出。进入图像处理系统,打开1.BMP,验证程序输出结果。

2、

打开1.BMP文件,改变以下矩形区域对应的图像数据为0(或255)

(height/3,width/3)

(height*2/3,width*2/3)

输出新的图像文件2.BMP。进入图像处理系统,打开2.BMP,检查修改结果是否正确。

3、

打开1.BMP文件,将图像宽度和高度进行延拓,宽度变为width+20,图像高度变为height+15,延拓部分置0(或255)。并输出新的图像文件3.BMP,进入图像处理系统,打开3.BMP,检查结果是否正确。

二、实验环境:

VC6++

三、实验代码及结果:

1、实验1

实验代码:

#include

#define

rows

512//行

#define

cols

512//列

typedef

struct

P

{

unsigned

char

B,G,R;

}PIXEL;

int

main()

{

int

i,j;

PIXEL

nowP[rows][cols];

FILEfp,*fout;

fp=fopen(“Lenna.bmp“,“rb“);

fout=fopen(“1.txt“,“w“);

char

filehead[54];

fread(filehead,1,54,fp);

fread(nowP,3,rows*cols,fp);

for(i=0;i

#define

rows

512

#define

cols

512

typedef

struct

P

{

unsigned

char

B,G,R;

}PIXEL;

int

main()

{

int

i,j;

FILEfp,*fout;

char

filehead[54];

PIXEL

nowP[rows][cols];

fp=fopen(“Lenna.bmp“,“rb“);

fout=fopen(“2.bmp“,“wb“);

fread(filehead,1,54,fp);

fread(nowP,3,rows*cols,fp);

for(i=rows/3;i

#include

“windows.h“#define

rows

512

#define

cols

512

struct

pixel

{

unsigned

char

B,G,R;

}nowP[rows][cols],newP[rows+15][cols+20];

int

main()

{

int

i,j;

FILEfp,*fout;

unsigned

char

old[54],new[54];

pixel

pp;

fp=fopen(“Lenna.bmp“,“rb“);

fout=fopen(“3.bmp“,“wb“);

fread(

for(i=0;i<54;i++)new[i]=old[i];

new[18]=new[18]+20;

new[22]=new[22]+15;

fwrite(

fread(

for(i=0;i

for(j=0;j

{

newP[i][j].B=nowP[i][j].B;

newP[i][j].G=nowP[i][j].G;

newP[i][j].R=nowP[i][j].R;

}

for(i=rows;i

{

for(j=cols;j

{

newP[i][j].B=0;

newP[i][j].G=0;

newP[i][j].R=0;

}

}

fclose(fp);

fwrite(newP[0],1,3*(rows+20)*(cols+15),fout);

fclose(fout);

return

0;

}

原图像:

输出图像:

四、实验总结:

这次实验分为三个内容,前两个实验基本上是研究生学长带领我们一步一步地进行操作,编程和图像处理,每一步操作、每一行代码的意义和思想,助教都给我们讲的非常透彻,在进行前两个实验的时候基本上没有遇到什么问题。第三个实验研究生学长要求我们自己独立完成任务,我在尝试的一开始遇到了困难,编译出现许多错误。不过还算比较好的是在经过助教的些许提示之后我还是比较快的找到了有效的解决方法,最终在经过好几次尝试后我终于正确地处理了图像。

通过此次数字图像处理实验,我进一步熟悉了VC++的使用,同时了解了如何使用编程C语言来进行数字图像的简单处理。总体来说,此次实验让我对数字图像处理的方法有了更深刻的认识,这对我今后的数字图像处理方面有着不少的帮助,今后的实验一定会更难,但我有信心能把它们都完成好。

14

篇2:数字图像处理实验报告全答案

数字图像处理实验报告全答案 本文关键词:图像处理,答案,实验,数字,报告

数字图像处理实验报告全答案 本文简介:实验一常用MATLAB图像处理命令一、实验目的1、熟悉并掌握MATLAB工具的使用;2、实现图像的读取、显示、代数运算和简单变换。二、实验环境MATLAB6.5以上版本、WINXP或WIN2000计算机三、常用函数l读写图像文件1imreadimread函数用于读入各种图像文件,如:a=imread

数字图像处理实验报告全答案 本文内容:

实验一

常用MATLAB图像处理命令

一、实验目的

1、熟悉并掌握MATLAB工具的使用;

2、实现图像的读取、显示、代数运算和简单变换。

二、实验环境

MATLAB

6.5以上版本、WIN

XP或WIN2000计算机

三、常用函数

l

读写图像文件

1

imread

imread函数用于读入各种图像文件,如:a=imread(

e:/w01.tif

)

2

imwrite

imwrite函数用于写入图像文件,如:imwrite(a,e:/w02.tif,’tif’)

3

imfinfo

imfinfo函数用于读取图像文件的有关信息,如:imfinfo(

e:/w01.tif

)

l

图像的显示

1

image

image函数是MATLAB提供的最原始的图像显示函数,如:

a=[1,2,3,4;4,5,6,7;8,9,10,11,12];

image(a);

2

imshow

imshow函数用于图像文件的显示,如:

i=imread(

e:/w01.tif

);

imshow(i);

title(‘原图像’)%加上图像标题

3

colorbar

colorbar函数用显示图像的颜色条,如:

i=imread(

e:/w01.tif

);

imshow(i);

colorbar;

4

figure

figure函数用于设定图像显示窗口,如:figure(1);

/figure(2);

5

subplot

把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。

Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。

6

plot

绘制二维图形

plot(y)

Plot(x,y)xy可以是向量、矩阵。

l

图像类型转换

1

rgb2gray//灰色

把真彩图像转换为灰度图像

i=rgb2gray(j)

2

im2bw//黑白

通过阈值化方法把图像转换为二值图像

I=im2bw(j,level)

Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围的n%

3

imresize

改变图像的大小

I=imresize(j,[m

n])将图像j大小调整为m行n列

l

图像运算

1

imadd

两幅图像相加,要求同样大小,同种数据类型

Z=imadd(x,y)表示图像x+y

2

imsubstract

两幅图像相减,要求同样大小,同种数据类型

Z=imsubtract(x,y)

表示图像x-y

3

immultiply

Z=immultiply(x,y)

表示图像x*y

4

imdivide

Z=imdivide(x,y)

表示图像x/y

5:m

=

imadjust(a,[,],[0.5;1])

;%图像变亮

n

=

imadjust(a,[,],[0;0.5])

;%图像变暗

g=255-a;%负片效果

四、实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)

1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。

a=imread(

f:/1.jpg

)

i

=

rgb2gray(a)

I

=

im2bw(a,0.5)

subplot(3,1,1);imshow(a);title(

原图像

)

subplot(3,1,2);imshow(i);title(

灰度图像

)

subplot(3,1,3);imshow(I);title(

二值图像

)

2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。

a=imread(

f:/1.jpg

)

A=imresize(a,[800

800])

b=imread(

f:/2.jpg

)

B=imresize(b,[800

800])

Z1=imadd(A,B)

Z2=imsubtract(A,B)

Z3=immultiply(A,B)

Z4=imdivide(A,B)

subplot(3,2,1);

imshow(A);title(

原图像A

)

subplot(3,2,2);

imshow(B);title(

原图像B

)

subplot(3,2,3);

imshow(Z1);title(

加法图像

)

subplot(3,2,4);

imshow(Z2);title(

减法图像

)

subplot(3,2,5);

imshow(Z3);title(

乘法图像

)

subplot(3,2,6);

imshow(Z2);title(

除法图像

)

3、

对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。

a=imread(

f:/1.jpg

);

m

=

imadjust(a,[,],[0.5;1])

;%图像变亮

n

=

imadjust(a,[,],[0;0.5])

;%图像变暗

g=255-a;%负片效果

subplot(2,2,1);imshow(a);title(

原图像

)

subplot(2,2,2);imshow(m);title(

图像变亮

)

subplot(2,2,3);imshow(n);title(

图像变暗

)

subplot(2,2,4);imshow(g);title(

负片效果

)

4、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。

方法:选择函数(函数所在区变暗),点右键弹出菜单,选择“Help

on

Selection”

五、实验总结

分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。

实验四

常用图像增强方法

一、实验目的

1、熟悉并掌握MATLAB图像处理工具箱的使用;

2、理解并掌握常用的图像的增强技术。

二、实验环境

MATLAB

6.5以上版本、WIN

XP或WIN2000计算机

三、相关知识

1

imnoise

imnoise函数用于对图像生成模拟噪声,如:

i=imread(

e:/w01.tif

);

j=imnoise(i,gaussian,0,0.02);模拟均值为0方差为0.02的高斯噪声,

j=imnoise(i,salt%sobel水平边缘增强滤波器

h=fspecial(

gaussian

);%高斯低通滤波器

h=fspecial(

laplacian

);%拉普拉斯滤波器

h=fspecial(

log

);%高斯拉普拉斯(LoG)滤波器

h=fspecial(

average

);%均值滤波器

3

基于卷积的图像滤波函数

imfilter函数,

filter2函数,二维卷积conv2滤波,都可用于图像滤波,用法类似,如:

i=imread(

e:/w01.tif

);

h=[1,2,1;0,0,0;-1,-2,-1];%产生Sobel算子的水平方向模板

j=filter2(h,i);

或者:

h

=

fspecial(‘prewitt’)

I

=

imread(

cameraman.tif

);

imshow(I);

H

=

fspecial(

prewitt‘);

%预定义滤波器

M

=

imfilter(I,H);

imshow(M)

或者:

i=imread(

e:/w01.tif

);

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

4

其他常用滤波举例

(1)中值滤波

medfilt2函数用于图像的中值滤波,如:

i=imread(

e:/w01.tif

);

j=medfilt2(i,[M

N]);对矩阵i进行二维中值滤波,领域为M*N,缺省值为3*3

(2)利用拉氏算子锐化图像,如:

i=imread(

e:/w01.tif

);

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,same

);

三、实验步骤

1、采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波,窗口分别采用3*3,5*5,7*7

I

=

imread(

f:/lena.png

);

J

=

imnoise(I,salt

K1

=

medfilt2(J,[3

3]);%对矩阵i进行二维中值滤波,领域为3*3

K2

=

medfilt2(J,[5

5]);

K3

=

medfilt2(J,[7

7]);

subplot(2,2,1);imshow(J);title(

椒盐噪声干扰图像

)

subplot(2,2,2);imshow(K1);title(

领域为3*3二维中值滤波

)

subplot(2,2,3);imshow(K2);title(

领域为5*5二维中值滤波

)

subplot(2,2,4);imshow(K3);title(

领域为7*7二维中值滤波

)

2、采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波

I

=

imread(

f:/lena.png

);

j=imnoise(i,gaussian,0,0.02);%模拟均值为0方差为0.02的高斯噪声,

M=

filter2(fspecial(

average,9),J)/255;

%模板尺寸为9

subplot(2,1,1);imshow(j);title(

噪声干扰图像

)

subplot(2,1,2);imshow(M);title(

改进后的图像

)

3、

采用三种不同算子对图像进行锐化处理。

i=imread(

f:/1.jpg

)

I=rgb2gray(s)

H=fspecial(

sobel

)%应用Sobel算子锐化图像

I1=filter2(H,I)%Sobel算子滤波锐化

H=fspecial(

prewitt

)%应用prewitt算子锐化图像

I2=filter2(H,I)%prewitt算子滤波锐化

H=fspecial(

log

)%应用log算子锐化图像

I3=filter2(H,I)%log算子滤波锐化

subplot(2,2,1);imshow(i);title(

原图像

)

subplot(2,2,2);imshow(I1);title(

Sobel算子锐化图像

)

subplot(2,2,3);imshow(I2);title(

prewitt算子锐化图像

)

subplot(2,2,4);imshow(I3);title(

log算子锐化图像

)

四、实验总结

1、比较不同平滑滤波器的处理效果,分析其优缺点

2、比较不同锐化滤波器的处理效果,分析其优缺点

实验五

图像恢复和图像分割

一、实验目的

1、熟悉并掌握MATLAB图像处理工具箱的使用;

2、理解并掌握常用的图像的恢复和分割技术。

二、实验环境

MATLAB

6.5以上版本、WIN

XP或WIN2000计算机

三、相关知识

1

deconvwnr

维纳滤波,

用法:J

=

deconvwnr(I,PSF,NSR)

用维纳滤波算法对图片I进行图像恢复后返回图像J。

I是一个N维数组。PSF是点扩展函数的卷积。NSP是加性噪声的噪声对信号的功率比。

如:

I

=

im2double(imread(

cameraman.tif

));

imshow(I);

title(

Original

Image

);

%模拟运动模糊

Matlab中文论坛

LEN

=

21;

THETA

=

11;

PSF

=

fspecial(

motion,LEN,THETA);

blurred

=

imfilter(I,PSF,conv,circular

);

figure,imshow(blurred)

%恢复图像www.iLoveMatlab.cn

wnr2

=

deconvwnr(blurred_noisy,PSF);

figure,imshow(wnr2)

title(

Restoration

of

Blurred

)

2

edge

检测灰度或者二值图像的边缘,返回一个二值图像,1像素是检测到的边缘,0像素是非边缘。

用法:BW

=

edge(I,sobel,thresh,direction),

I为检测对象;边缘检测算子可用sobel,roberts,prewitt,zerocross,log,canny;

thresh指定阈值,检测时忽略所有小于阈值的边缘,默认自动选择阈值;direction方向,在所指定的方向direction上,用

算子进行边缘检测horizontal(水平方向)、vertical(垂直方向)或both(两个方向)。

如:I

=

imread(

circuit.tif

);

BW1

=

edge(I,prewitt

);

imshow(BW1);

3

strel

创建形态学结构元素。

用法:

SE

=

STREL(

arbitrary,NHOOD,HEIGHT)

创建一个指定领域的非平面结构化元素。HEIGHT是一个矩阵,大小和NHOOD相同,他指定了NHOOD中任何非零元素的高度值。

SE

=

STREL(

ball,R,H,N)

创建一个空间椭球状的结构元素,其X-Y平面半径为R,高度为H。R必须为非负整数,H是一个实数。N必须为一个非负偶数。当N>0时此球形结构元素由一系列空间线段结构元素来近似。

SE

=

STREL(

diamond,R)

创建一个指定大小R平面钻石形状的结构化元素。R是从结构化元素原点到其点的距离,必须为非负整数。

SE

=

STREL(

disk,R,N)

创建一个指定半径R的平面圆盘形的结构元素。这里R必须是非负整数.

N须是0,4,6,8.当N大于0时,圆盘形结构元素由一组N(或N+2)个周期线结构元素来近似。当N等于0时,不使用近似,即结构元素的所有像素是由到中心像素距离小于等于R的像素组成。N可以被忽略,此时缺省值是4。注:

形态学操作在N>0情况下要快于N=0的情形。

如:

se1

=

strel(

square,11)

%

11乘以11的正方形

4

imerode

腐蚀图像

用法:IM2

=

imerode(IM,SE)

腐蚀灰度、二进制或压缩二进制图像

IM

,返回腐蚀图像

IM2

。参数

SE

是函数

strel

返回的一个结构元素体或是结构元素体阵列。

如:使用一个盘状结构元素腐蚀一幅二进制图像。

originalBW

=

imread(

circles.png

);

se

=

strel(

disk,11);

erodedBW

=

imerode(originalBW,se);

imshow(originalBW),figure,imshow(erodedBW)

5

imdilate

膨胀图像

用法:IM2

=

imdilate(IM,SE)

膨胀灰度图像、二值图像、或者打包的二值图像IM,返回膨胀图像M2。变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。

如:利用一个运行结构元素膨胀灰度图像。

I

=

imread(

cameraman.tif

);

se

=

strel(

ball,5,5);

I2

=

imdilate(I,se);

imshow(I),title(

Original

)

figure,imshow(I2),title(

Dilated

)

三、实验步骤

1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。

i=imread(

f:/1.jpg

)

I=rgb2gray(s)

I

=

im2double(I);

%模拟运动模糊

LEN

=

21;

THETA

=

11;

PSF

=

fspecial(

motion,LEN,THETA);

blurred

=

imfilter(I,PSF,conv,circular

);

%恢复图像

wnr2

=

deconvwnr(blurred,PSF);

subplot(1,2,1);imshow(blurred);title(

运动模糊图像

)

subplot(1,2,2);imshow(wnr2);title(

恢复图像

)

2、

采用三种不同算子检测图像边缘,显示结果。

i=imread(

f:/1.jpg

)

BW1

=

edge(I,prewitt

);

BW2

=

edge(I,zerocross

);

BW3

=

edge(I,canny

);

subplot(2,2,1);imshow(i);title(

原图像

)

subplot(2,2,2);imshow(BW1);title(

prewitt边缘图

)

subplot(2,2,3);imshow(BW2);title(

zerocross边缘图

)

subplot(2,2,4);imshow(BW3);title(

canny边缘图

)

3、对二值图像分别进行方形模板3*3和5*5的膨胀和腐蚀操作,显示结果。

a=imread(

f:/1.jpg

)

i

=

rgb2gray(a)

I

=

im2bw(a,0.5)

se3

=

strel(

disk,3);

erodedBW1

=

imerode(I,se3);

se4

=

strel(

disk,5);

erodedBW2

=

imerode(I,se4);

se1

=

strel(

ball,3,3);

I1

=

imdilate(a,se1);

se2

=

strel(

ball,5,5);

I2

=

imdilate(a,se2);

subplot(2,2,1);imshow(I1);title(

3*3膨胀图像

)

subplot(2,2,2);imshow(I2);title(

5*5膨胀图像

)

subplot(2,2,3);imshow(erodedBW1);title(

3*3腐蚀图像

)

subplot(2,2,4);imshow(erodedBW2);title(

5*5腐蚀图像

)

实验六

图像处理实际应用

一、实验目的

1、熟悉并掌握MATLAB图像处理工具箱的使用;

2、理解并掌握常用的图像处理技术。

二、实验环境

MATLAB

6.5以上版本、WIN

XP或WIN2000计算机

三、实验内容

调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。总结算法思想及优缺点.

I=imread(

Car.jpg

);

[y,x,z]=size(I);

myI=double(I);

%%%%%%%%%%%

RGB

to

HSI

%%%%%%%%

tic

%%%%%%%%

Y

方向

%%%%%%%%%%

Blue_y=zeros(y,1);

for

i=1:y

for

j=1:x

if((myI(i,j,1)=51))

end

end

end

[temp

MaxY]=max(Blue_y);

%

Y方向车牌区域确定

PY1=MaxY;

while

((Blue_y(PY1,1)>=5)

end

PY2=MaxY;

while

((Blue_y(PY2,1)>=5)

end

end

end

PX1=1;

while

((Blue_x(1,PX1)PX1))

PX2=PX2-1;

end

PX1=PX1-2;

%

对车牌区域的修正

PX2=PX2+2;

Plate=I(PY1:PY2,PX1-2:PX2,:);

t=toc

%

读取计时

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure,imshow(I);

figure,plot(Blue_y);grid

figure,plot(Blue_x);grid

figure,imshow(IY);

添加注释和改正后的程序:

I=imread(

f:/Car.jpg

);%读取图片

[y,x,z]=size(I);%给定图片大小

myI=double(I);%返回双精度值

%%%%%%%%%%%

RGB

to

HSI

%%%%%%%%

tic

%计时开始

%%%%%%%%

Y

方向

%%%%%%%%%%

Blue_y=zeros(y,1);%一列全零矩阵

for

i=1:y%给定i的范围

for

j=1:x%给定j的范围

if((myI(i,j,1)=51))

%

y矩阵加一

end

end

end

[temp

MaxY]=max(Blue_y);

%

Y方向车牌区域确定

PY1=MaxY;%y矩阵的最大元素

while

((Blue_y(PY1,1)>=5)

%对车牌区域的修正,向上调整

end

PY2=MaxY;

%y矩阵的最大元素

while

((Blue_y(PY2,1)>=5)

%

Blue_x

的矩阵加一

end

end

end

PX1=1;%当PX1等于1时

while

((Blue_x(1,PX1)PX1))

%确定蓝色RGB

Blue_x的位置

PX2=PX2-1;

%对车牌区域的修正向下调整

end

PX1=PX1-2;

%

对车牌区域的修正

PX2=PX2+2;

%对车牌区域的修正

Plate=I(PY1:PY2,PX1-2:PX2,:);%矩阵行列的范围

t=toc

%

读取计时

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure,imshow(I);%创建图像窗口,显示图像I

figure,plot(Blue_y);grid%创建图像窗口,绘制Blue_y图像,画出网格线

figure,plot(Blue_x);grid%创建图像窗口,绘制Blue_x图像,画出网格线

figure,imshow(Plate);

%创建图像窗口,显示图像Plate

t

=

0.5630

实验二

图像基本操作

一、实验目的

1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换。

2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。

二、实验环境

MATLAB

6.5以上版本、WIN

XP或WIN2000计算机

三、相关函数

l

图像的增强

1、

直方图

imhist函数用于数字图像的直方图计算或显示,

imhist(I,n)计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。如果I是二值图像,那么n仅有两个值。

[counts,x]

=

imhist(.)返回直方图数据向量counts,相应的色彩值向量x。

如:

i=imread(

e:/w01.tif

);

imhist(i);

2

、直方图均衡化

histeq函数用于数字图像的直方图均衡化,

J

=

histeq(I,n)

均衡化后的级数n,缺省值为64。

J

=

histeq(I,hgram)

“直方图规定化“,即将原是图象

I

的直方图变换成用户指定的向量

hgram

(即指定另一幅图像的直方图数据向量)。

如:

i=imread(

e:/w01.tif

);

j=histeq(i,N);对图像i执行均衡化,得到具有N个灰度级的灰度图像j,N缺省值为64

3、

灰度调整

imadjust函数用于数字图像的灰度或颜色调整,

J

=

imadjust(I)

将灰度图像

I

中的亮度值映射到

J

中的新值并使

1%

的数据是在低高强度和饱和,这增加了输出图像

J

的对比度值。

J

=

imadjust(I,[low_in;

high_in],[low_out;

high_out])

将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in

以下与

high_in

以上的值被剪切掉了,也就是说,low_in

以下的值映射到

low_out,high_in

以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0

1]。

如:

i=imread(

e:/w01.tif

);

j=imadjust(i,[0.3,0.7],[]);将图像i转换为j,使灰度值从0.3~0.7与缺省值0~1相匹配

l

运算函数

1、Zeros生成全0数组或矩阵

B

=

zeros(m,n)

or

B

=

zeros([m

n])

返回一个

m*n

全0矩阵

2、取整函数

floor最小取整函数

round四舍五入取整函数

ceil最大取整函数

如a

=

[-1.9,-0.2,3.4,5.6,7.0,2.4+3.6i]

I=round(a)

I

=[

-2

0

3

6

7

2+

4i]

四、实验内容

1、对一幅图像进行2倍、4倍、8倍和16倍减采样,显示结果。

a=imread(

f:/1.jpg

);

b=rgb2gray(a);

for

m=1:4

figure

[width,height]=size(b);

quartimage=zeros(floor(width/(m)),floor(height/(2*m)));

k=1;

n=1;

for

i=1:(m):width

for

j=1:(2*m):height

quartimage(k,n)=b(i,j);

n=n+1;

end

k=k+1;

n=1;

end

imshow(uint8(quartimage));

End

2、

显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。

a=imread(

f:/lena_color.png

)

c=rgb2gray(a)

b=c-46

subplot(2,1,1);imhist(c);title(

原图像

)

subplot(2,1,2);imhist(b);title(

变暗后的图像

)

3、

对图像b进行直方图均衡化,显示结果图像和对应直方图。

b=imread(

f:/lena_color.png

)

c=rgb2gray(b)

j=histeq(c)

subplot(2,2,1),imshow(c)

subplot(2,2,2),imshow(j)

subplot(2,2,3),imhist(c)

%显示原始图像直方图

subplot(2,2,4),imhist(j)

%显示均衡化后图像的直方图

4、

读入图像c,执行直方图规定化,使图像a的灰度分布与c大致相同,显示变换后图像及对应直方图。

I=imread(

f:/lena.png

);

>>

J=histeq(I,64);

%均衡化成32个灰度级的直方图

>>

[counts,x]=imhist(J);

%返回直方图图像向量counts

b=imread(

f:/1.jpg

)

Q=rgb2gray(b)

>>

M=histeq(Q,counts);

%将原始图像Q的直方图变成指定向量counts

>>

figure,>>

subplot(3,2,1),imshow(I);

>>

subplot(3,2,2),imshow(Q);

>>

subplot(3,2,3),imhist(I);

>>

subplot(3,2,4),imhist(Q)

>>

subplot(3,2,5),imhist(J);

>>

subplot(3,2,6),imhist(M);

实验三

图像变换

一、实验目的

1、熟悉及掌握图像的变换原理及性质,实现图像的傅里叶变换。

二、实验环境

MATLAB

6.5以上版本、WIN

XP或WIN2000计算机

三、相关函数

l

图像的变换

1

fft2

fft2函数用于数字图像的二维傅立叶变换,如:

i=imread(

e:/w01.tif

);

j=fft2(i);

由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。

之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。

2

ifft2

ifft2函数用于数字图像的二维傅立叶反变换,如:

i=imread(

e:/w01.tif

);

j=fft2(i);

k=ifft2(j);

3

fftshift

用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心

B=fftshift(i)

4

利用fft2计算二维卷积

利用fft2函数可以计算二维卷积,如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

a(8,8)=0;

b(8,8)=0;

c=ifft2(fft2(a).*fft2(b));

c=c(1:5,1:5);

利用conv2(二维卷积函数)校验,如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

c=conv2(a,b);

四、实验内容

1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。

s=imread(

f:/1.jpg

);%读入原图像

i=rgb2gray(s)

i=double(i)

j=fft2(i);

%傅里叶变换

k=fftshift(j);

%

直流分量移到频谱中心

l=log(abs(k));

%对数变换

m=fftshift(j);

%直流分量移到频谱中心

RR=real(m);

%取傅里叶变换的实部

II=imag(m);

%取傅里叶变换的虚部

A=sqrt(RR.^2+II.^2);

%计算频谱府幅值

A=(A-min(min(A)))/(max(max(A)))*255;

%

归一化

b=circshift(s,[800

450]);

%对图像矩阵im中的数据进行移位操作

b=rgb2gray(b)

b=double(b)

c=fft2(b);

%傅里叶变换

e=fftshift(c);

%

直流分量移到频谱中心

l=log(abs(e));

%对数变换

f=fftshift(c);

%直流分量移到频谱中心

WW=real(f);

%取傅里叶变换的实部B

ZZ=imag(f);

%取傅里叶变换的虚部

B=sqrt(WW.^2+ZZ.^2);

%计算频谱府幅值

B=(B-min(min(B)))/(max(max(B)))*255;

%

归一化

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

原图像

)

subplot(2,2,2);imshow(uint8(b));;title(

平移图像

)

subplot(2,2,3);imshow(A);title(

离散傅里叶频谱

);

subplot(2,2,4);imshow(B);title(

平移图像离散傅里叶频谱

)

2、

对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。

s=imread(

f:/1.jpg

);%读入原图像

i=rgb2gray(s)

i=double(i)

j=fft2(i);

%傅里叶变换

k=fftshift(j);

%

直流分量移到频谱中心

l=log(abs(k));

%对数变换

m=fftshift(j);

%直流分量移到频谱中心

RR=real(m);

%取傅里叶变换的实部

II=imag(m);

%取傅里叶变换的虚部

A=sqrt(RR.^2+II.^2);

%计算频谱府幅值

A=(A-min(min(A)))/(max(max(A)))*255;

%

归一化

b=imrotate(s,-90);

%对图像矩阵im中的数据进行移位操作

b=rgb2gray(b)

b=double(b)

c=fft2(b);

%傅里叶变换

e=fftshift(c);

%

直流分量移到频谱中心

l=log(abs(e));

%对数变换

f=fftshift(c);

%直流分量移到频谱中心

WW=real(f);

%取傅里叶变换的实部B

ZZ=imag(f);

%取傅里叶变换的虚部

B=sqrt(WW.^2+ZZ.^2);

%计算频谱府幅值

B=(B-min(min(B)))/(max(max(B)))*255;

%

归一化

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

原图像

)

subplot(2,2,2);imshow(uint8(b));;title(

平移图像

)

subplot(2,2,3);imshow(A);title(

离散傅里叶频谱

);

subplot(2,2,4);imshow(B);title(

平移图像离散傅里叶频谱

)

篇3:《数字图像处理》期末考试重点总结

《数字图像处理》期末考试重点总结 本文关键词:图像处理,期末考试,重点,数字

《数字图像处理》期末考试重点总结 本文简介:*数字图像处理的主要内容及特点图像获取、图像变换、图像增强、图像恢复、图像压缩、图像分析、图像识别、图像理解。(1)处理精度高,再现性好。(2)易于控制处理效果。(3)处理的多样性。(4)图像数据量庞大。(5)图像处理技术综合性强。图像增强:通过某种技术有选择地突出对某一具体应用有用的信息,削弱或抑

《数字图像处理》期末考试重点总结 本文内容:

*数字图像处理的主要内容及特点

图像获取、图像变换、图像增强、图像恢复、图像压缩

、图像分析、图像识别、图像理解

(1)处理精度高,再现性好。(2)易于控制处理效果。(3)处理的多样性。(4)图像数据量庞大。(5)图像处理技术综合性强。图像增强:通过某种技术有选择地突出对某一具体应用有用的信息,削弱或抑制一些无用的信息。

图像增强不存在通用理论。

图像增强的方法:空间域方法和变换域方法。图像反转:S=L-1-r

1.

与原图像视觉内容相同2.适用于增强嵌入于图像暗色区域的白色或灰色细节。对数变换

S=C*log(1+r)c为常数,r>=0

作用与特点:对数变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,同时,对输入中范围较宽的高灰度值映射为输出中较窄范围的灰度值。

对数函数的一个重要特征是可压缩像素值变化较大的图像的动态范围;幂律(伽马)变换

s=c*(r+?)?

伽马小于1时减小图像对比度,伽马大于1时增大对比度。灰度直方图

:是数字图像中各灰度级与其出现的频数间的统计关系。直方图均衡化:直方图均衡化就是通过变换函数将原图像的直方图修正为均匀的直方图,即使各灰度级具有相同的出现频数,图象看起来更清晰。

直方图均衡化变换函数必须为严格单调递增函数。

直方图均衡化的特点:

?1.能自动增强图像的对比度2.得到了全局均衡化的直方图,即均匀分布3.但其效果不易控制直方图规定化(匹配):用于产生处理后有特殊直方图的图像的方法空间滤波即直接对图像像素进行处理。

获得最佳滤波效果的唯一方法是使滤波掩模中心距原图像边缘的距离不小于(n-1)/2个像素。平滑滤波器用于模糊处理和减小噪声。

平滑线性空间滤波器的输出是:待处理图像在滤波器掩模邻域内的像素的简单平均值。

优点:减小了图像灰度的“尖锐”变化,故常用于图像降噪。负面效应:模糊了图像的边缘,因为边缘也是由图像灰度的尖锐变化造成的。

空间均值处理的重要应用是,为了对感兴趣的物体得到一个粗略的描述而模糊一幅图像。中值滤波器机理:将像素邻域内灰度的中值代替该像素的值;

v对于处理脉冲噪声非常有效,该种噪声也称为椒盐噪声;量化:把采样点上对应的亮度连续变化区间转换为单个特定数码的过程,称之为量化,即采样点亮度的离散化。灰度图像:指每个像素的信息由一个量化的灰度级来描述的图像,它只有亮度信息,没有颜色信息。图像锐化滤波的几种方法。

答:(1)直接以梯度值代替;(2)辅以门限判断;(3)给边缘规定一个特定的灰度级;(4)给背景规定灰度级;(5)根据梯度二值化图像。伪彩色增强和假彩色增强有何异同点。

答:伪彩色增强是对一幅灰度图像经过三种变换得到三幅图像,进行彩色合成得到一幅彩色图像;假彩色增强则是对一幅彩色图像进行处理得到与原图象不同的彩色图像;主要差异在于处理对象不同。相同点是利用人眼对彩色的分辨能力高于灰度分辨能力的特点,将目标用人眼敏感的颜色表示。图像编码基本原理是什么?数字图像的冗余表现有哪几种表现形式?

答:虽然表示图像需要大量的数据,但图像数据是高度相关的,

或者说存在冗余(Redundancy)信息,去掉这些冗余信息后可以有效压缩图像,同时又不会损害图像的有效信息。

数字图像的冗余主要表现为以下几种形式:空间冗余、时间冗余、视觉冗余、

信息熵冗余、结构冗余和知识冗余。什么是中值滤波,有何特点?

答:中值滤波是指将当前像元的窗口(或领域)中所有像元灰度由小到大进行排序,中间值作为当前像元的输出值。特点:它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。图像增强的目的是什么?

答:对图像进行加工,使其结果比原始图像更适用于特定应用。

“特定”一词表明图像增强技术是面向问题的。图像锐化与图像平滑有何区别与联系?

答:区别:图像锐化是用于增强边缘,导致高频分量增强,会使图像清晰;图像平滑用于消除图像噪声,但是也容易引起边缘的模糊。联系:都属于图像增强,改善图像效果。图像复原和图像增强的主要区别是:

图像增强主要是一个主观过程,而图像复原主要是一个客观过程;图像增强不考虑图像是如何退化的,而图像复原需知道图像退化的机制和过程等先验知识图像增强时,平滑和锐化有哪些实现方法?

平滑的实现方法:邻域平均法,中值滤波,多图像平均法,频域低通滤波法。

锐化的实现方法:微分法,高通滤波法。对于椒盐噪声,为什么中值滤波效果比均值滤波效果好?

椒盐噪声是复制近似相等但随机分布在不同的位置上,图像中又干净点也有污染点。中值滤波是选择适当的点来代替污染点的值,所以处理效果好。因为噪声的均值不为0,所以均值滤波不能很好地去除噪声。什么是区域?什么是图像分割?

区域可以认为是图像中具有相互连通、一致属性的像素集合。图像分割时把图像分成互不重叠的区域并提取出感兴趣目标的技术。图像中微分算子的特点

v

1.一阶微分产生较粗的边缘,二阶微分产生的边缘则较细;

2.对于孤立的噪声点,在该点及其周围点上,二阶微分比一阶微分的响应要强很多;3.二阶微分有一个过渡,即从正回到负,在图像中,表现为双线。二维图像函数f(x,y)的拉普拉斯变换定义为:

锐化图像=

原图像+

拉普拉斯图像对于数字图像处理而言,离散傅里叶变换和其反变换必定存在。

用(-1)x+y乘以f(x,y),可以将F(u,v)原点变换到频率坐标的(M/2,N/2)处。

在决定形状特点时,相位信息非常重要。理想滤波器的在频域的剖面图类似于盒滤波器(矩形窗口),因此相应的空间滤波具有sinc函数的形状。

sinc函数的中心波瓣(主瓣)是引起模糊的主因,而外侧较小的波瓣(旁瓣)是造成振铃的主要原因。巴特沃斯低通滤波器(BLPF)

1阶的巴特沃斯滤波器没有振铃;

2阶的滤波器振铃通常很微小;

20阶的巴特沃斯滤波器就非常类似于理想低通滤波器了。高斯低通滤波器(GLPF)

高斯低通滤波器没有振铃

在需要严格控制低频和高频之间截止频率过渡的情况下,巴特沃斯滤波器是个更合适的选择,但其代价是可能产生振铃现象。图像变换:将定义在图像空间的原图像,以某种形式转换到另外一些空间,并利用这些空间的特有性质方便进行一定的加工。

离散余弦变换主要用于图像的压缩,压缩方法是给高频系数大间隔量化,低频部分小间隔量化。图像复原技术的主要目的是以预先确定的目标来改善图像,尽可能的减少或消除图像质量的下降,恢复被退化图像的本来面目。

图像退化的部分原因:1.光学成像器件的相差;2.成像衍射;3.成像过程的非线性系统噪声。图像退化/复原模型

图像复原处理的关键是建立退化模型,原图像f(x,y)是通过一个系统H及加入一来加性噪声n(x,y)而退化成一幅图像g(x,y)

g(x,y)=H[f(x,y)]+n(x,y)谐波均值滤波器对于盐粒噪声效果较好,但不适用于胡椒噪声。它善于处理高斯噪声那样的其他噪声。逆谐波均值滤波器

当值为正时,可消除胡椒噪声;

当值为负时,可消除盐粒噪声;

当值为0时,其简化为算术均值滤波器。中值滤波器

对于某些类型的随机噪声,中值滤波器可提供良好的去噪能力,且比同尺寸的线性平滑滤波器引起的模糊更少

?在存在单极和双极脉冲噪声的情况下,中值滤波器尤其有效。简述基于边缘检测的霍夫变换的原理。

把直线上点的坐标变换到过点的直线的系数域,通过利用共线和直线相交的关系,使直线的提取问题转化为计数问题。数字图像的定义,什么是数字图象处理?

数字图像是将一幅画面在空间上分割成离散的点(或像元),各点(或像元)的灰度值经量化用离散的整数来表示,形成计算机能处理的形式。

数字图像处理,就是利用计算机技术或其他数字技术,对图像信息进行某些数学运算和各种加工处理,以改善图像的视觉效果和提高图像实用性的技术。图像分割就是指把图像分成互不重叠的区域并提取出感兴趣目标的技术和过程。在计算数字梯度的实践中,Prewitt算子和Sobel算子是最常用的。高斯拉普拉斯(LoG)阈值分割方法总结

优点:简单、高效。局限性:对于目标和背景灰度级有明显差别的图像分割效果较好。对于目标和背景灰度一致性或均匀性较差的图像分割效果不好。只能将图像分割为两个区域,对于含有多个目标的图像分割几乎难以奏效。对于彩色图像,通常用以区别颜色的特性是

色调

饱和度

亮度

。一个基本的数字图像处理系统由图像输入、图像存储、图像输出、图像通信、图像处理和分析5个模块组成。低通滤波法是使

高频成分

受到抑制而让

低频成分

顺利通过,从而实现图像平滑。多年来建立了许多纹理分析法,这些方法大体可分为

统计分析法

和结构分析法两大类。图像压缩系统是有

编码器

解码器

两个截然不同的结构块组成的。图像数字化过程包括三个步骤:采样、量化和扫描数据压缩技术应用了数据固有的冗余性和不相干性,将一个大的数据文件转换成较小的文件。基本的形态学运算是腐蚀和膨胀。先腐蚀后膨胀的过程为开运算,先膨胀后腐蚀的过程为闭运算。灰度分辨率是指在灰度级别中可分辨的最小变化。

空间分辨率是图像中可分辨的最小细节。因为图像分割的结果图像为二值图像,所以通常又称图像分割为图像的(二值化处理)。(腐蚀)

是一种消除连通域的边界点,使边界向内收缩的处理。(膨胀)是将与目标区域的背景点合并到该目标物中,使目标物边界向外部扩张的处理。对于(椒盐)噪声,中值滤波效果比均值滤波效果好。常用的彩色增强方法有真彩色增强技术、假彩色增强技术和

伪彩色

增强三种。常用的灰度内插法有

最近邻元法

双线性内插法

(双)三次内插法

。假彩色增强和伪彩色增强的区别是什么?

假彩色增强是将一幅彩色图像映射到另一幅彩色图像,从而达到增强彩色对比,使某些图像达到更加醒目的目的。伪彩色增强是把一幅黑白域不同灰度级映射为一幅彩色图像的技术手段。图像编码基本原理是什么?数字图像的冗余表现有哪几种表现形式?

虽然表示图像需要大量的数据,但图像数据是高度相关的,

或者说存在冗余(Redundancy)信息,去掉这些冗余信息后可以有效压缩图像,

同时又不会损害图像的有效信息。数字图像的冗余主要表现为以下几种形式:空间冗余、时间冗余、视觉冗余、

信息熵冗余、结构冗余和知识冗余。