数字图像处理
1.图像工程的三个层次是指哪三个层次?各个层次对应的输入、输出对象分别是什么? 图像处理
特点:输入是图像,输出也是图像,即图像之间进行的变换。 图像分割
特点:输入是图像,输出是数据。 图像识别
特点:以客观世界为中心,借助知识、经验等来把握整个客观世界。“输入是数据,输出是理解。
2.常用的颜色模型有哪些(列举三种以上)?并分别说明颜色模型各分量代表的意义。 RGB(红、绿、蓝)模型 CMY(青、品红、黄)模型
HSI(色调、饱和度、亮度)模型
3.什么是图像的采样?什么是图像的量化?
1.采样
采样的实质就是要用多少点来描述一幅图像,采样结果质量的高低就是用前面所说的图像分辨率来衡量。简单来讲,对二维空间上连续的图像在水平和垂直方向上等间距地分割成矩形网状结构,所形成的微小方格称为像素点。一副图像就被采样成有限个像素点构成的集合。例如:一副640*480分辨率的图像,表示这幅图像是由640*480=307200个像素点组成。 2.量化
量化是指要使用多大范围的数值来表示图像采样之后的每一个点。量化的结果是图像能够容纳的颜色总数,它反映了采样的质量。
针对数字图像而言:
采样决定了图像的空间分辨率,换句话说,空间分辨率是图像中可分辨的最小细节。 量化决定了图像的灰度级,即指在灰度级别中可分辨的最小变化。
数字图像处理(第三次课)
实用文档
调用图像格式转换函数实现彩色图像、灰度图像、二值图像、索引图像之间的转换。 图像的类型转换:
对于索引图像进行滤波时,必须把它转换为RGB图像,否则对图像的下标进行滤波,得到的结果是毫无意义的;
灰度图像到索引图像 [X,map]=gray2ind(I, n) 将灰度图像I转化成索引图像 真彩图像到二值图像 BW=im2bw(RGB, level) 基于level将彩色图像RGB转化为二值图像 真彩色图像到灰度图像 I=rgb2gray(RGB) 将真彩图像RGB转换为灰度图像I 真彩色图像到索引图像 [X,map]=rgb2ind(RGB,n) [X,map]=rgb2ind(RGB,tol) 直接将真彩图像RGB转化为索引图像X并返回颜色图 图像抖动转换图像 X=dither(RGB, map) BW=dither(I) 通过颜色图将RGB图像转化为近似的索引图X; 或把灰度图像I转化为二值图像
2.用MATLAB完成灰度图像直方图统计代码设计。
1 2 3 4 5
function ladylenna() a=imread('C:\\lenna.jpg'); %读取图像至工作空间 imfinfo('C:\\lenna.jpg') %查看图像信息 subplot(2,2,1); imshow(a); 实用文档
6 7 8 9
title('lady-lenna'); if isrgb(a);
b=rgb2gray(a); %RGB转换为灰度图像 end
10 subplot(2,2,2);
11 imshow(b); %显示图像 12 title('ladygaga-lenna');
13 [m,n]=size(a); %返回图像大小 14 e=zeros(1,256); 15 for k=0:255 16 for i=1:m 17 for j=1:n
18 if a(i,j)==k
19 e(k+1)=e(k+1)+1; %灰度值相同的进行累加 20 end 21 end 22 end 23 end
24 subplot(2,2,4);
25 bar(e); %画图像的灰度直方图 26 title('灰度直方图');
27 c=imrotate(a,20); 28 %图像的旋转 29 subplot(2,2,3); 30 imshow(c);
实用文档
数字图像处理(第四次课)
编写matlab函数,实现在医学图像中数字减影血管造影。即实现两幅图像的差值图像。
1 2 3 4 5 6 7 8 9 实验代码 I=imread('F:\\图像处理\\1.jpg');%原始图像 imshow(I); BK=imread('F:\\图像处理\\2.jpg');%背景 figure; imshow(BK); Ip=imsubtract(I,BK);%图像减背景 figure; imshow(Ip,[]) 实验结果:
实用文档
图像剪切:
任意选择一幅图片,实现图像的镜像。 这题其实就是一个函数imcrop()的使用而已。
1 2 3 4 5 6 7 8 9 close all; clear all; clc; img=imread('F:\\图像处理\\3.jpg'); imshow(img); imgn=imcrop(); %这里把要裁剪的图像框出来 figure; 10 imshow(imgn) %显示裁剪的图像 实验结果:
实用文档
实现图像的镜像:
1 2 3 4 5 6 7 8 9
实验代码 clear all; close all; clc;
A=imread('F:\\图像处理\\4.jpg'); [height,width,dim]=size(A);
tform=maketform('affine',[-1 0 0;0 1 0;width 0 1]);
B=imtransform(A,tform,'nearest');%B中存储的是经过水平镜像变换后的图像 tform2=maketform('affine',[1 0 0;0 -1 0;0 height 1]);
10 C=imtransform(A,tform2,'nearest');%C中存储的是经过竖直镜像变换后的图像 11 subplot(1,3,1),imshow(A); 12 title('原图像');
13 subplot(1,3,2),imshow(B); 14 title('水平镜像'); 15 subplot(1,3,3),imshow(C); 16 title('坚直镜像'); 17 subplot(2,2,3); 18 imshow(c); 19 20
实用文档
实验结果:
数字图像处理(第五次课)
数字图像增强有哪些方法?
图像增强可分成两大类:频率域法和空间域法。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。后者空间域法中具有代表性的算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。
数字设一幅图像有如下图所示直方图,若对其进行直方图均衡处理,求出增强后的灰度分布,并给出处理后的直方图。
0.384 0.0.0.0.0.
0.174 0 1 2 3 4 5 6 7
0.088 0.058 0.086 0.068 0.062 0.08 实用文档
实验代码:
1 2 3 4 5 6 7 8 9
clc clear all
prob0=[.174 .088 .086 .08 .068 .058 .062 .384]; zero0=zeros(1,8); for i=1:8 if i==1
zero0(1)=prob0(1); else
zero0(1,i)=zero0(1,i-1)+prob0(1,i);
10 end 11 end 12 for i=1:8 13 if i==1
14 zero0(1)=prob0(1); 15 else
16 zero0(1,i)=zero0(1,i-1)+prob0(1,i); 17 end 18 end 19
20 zero1=zeros(1,8); 21 for i=1:8
22 for j=0:7
23 a=abs(zero0(i)-j/7); 24 if a<1/14
25 zero1(j+1)=zero1(j+1)+prob0(i); 26 end 27 end 28 end
29 b=find(zero1==0); 30 zero1(b)=[]; 31 prob1=zero1; 32 subplot(121) 33 bar(prob0) 34 title('均衡化前') 35 subplot(122) 36 bar(prob1) 37 title('均衡化后') 38 title('均衡化前') 39 subplot(122) 40 bar(prob1) 41 title('均衡化后')
实验结果:
实用文档
数字图像处理(第六次课)
利用help,学习imfilter和fspecial函数的用法,编写程序创建3*3的均值滤波器和半径为5的圆形滤波器对图像进行平滑处理;
MATLAB提供了基于卷积的图像滤波函数imfilter进行平滑滤波,该函数用指定的滤波器模板对图像进行运算。
其调用格式为: B = imfilter(h,A)
B = imfilter(h,A,shape)
其中B=imfilter(h,A)返回图像A经算子h滤波后的结果,参数shape指定滤波的计算范围,即:
shape=‘full’时,作边界补零
shape=‘same’时,返回图像B与输入图像A大小相同
shape=‘valid’时,不考虑边界补零,只计算有效输出部分。
此外,也可以使用imfilter函数进行卷积或相关性滤波来实现图像平滑。 该 函数的调用格式为: B = imfilter(A,H)
B = imfilter(A,H, option1,option2,…)
其中B=imfilter(A,H)返回图像A经算子h滤波后的结果;
B=imfilter(A,H, option 1, option 2,…)是根据指定的option参数实现图像 滤波。
option参数可以有下列取值:
边界填充选项 对一幅图像进行滤波时,零填充可能会导致图像被一个黑框围绕,为了消除 零填充的人工痕迹,
实用文档
imfilter函数支持三种可选的边界填充方法: ‘symmetric’ 边界对称
‘replicate’ 边界复制,缺省值
‘circular’ 边界循环 输出尺寸选项 其选项与imfilter函数的shape参数相同。
滤波选项 ‘corr’ 使用相关性来进行滤波,缺省使用此方法 ‘conv’ 使用卷积方法实现滤波
学习ordfilt2函数的用法,编程调用该函数利用不同的统计排序滤波器实现图像滤波。 中文理解函数名就是顺序滤波函数,后面的2表示的是2维滤波,常用的调用形式如下: 1.B = ordfilt2(A,order,domain) 这种形式中,A为被滤波的矩阵,order表示选取由domain确定的邻域中第order个元素替换A中的元素,存入B中。示例如下:
Y=ordfilt2(X,5,ones(3)) ; //相当于3*3窗口的中值滤波 Y=ordfilt2(X,1,ones(3)); //相当于3*3窗口的最小值滤波
需要注意的是,domain矩阵中可能会有某些位置为零(不为零的位置为1),这种为零的位置不算在顺序统计的领域之中。也就是说:
Y=ordfilt2(X,1,[0 1 0;1 0 1;0 1 0]) 表示用窗口表示的邻域中不为零的位置的像素值中选择最小的替代原来的像素值。 2.B = ordfilt2(A,order,domain,S)
暂时没搞明白S是做啥用的,好像一时半会儿也用不到,先记录着,以后想明白了再更新 利用help,学习edge函数的用法,并思考如何利用edge函数使用不同锐化算子对图像进行锐化。
1)利用matlab提供的edge函数,选择三种边缘检测算子,分别对图像Lena.tif和baboon.tif进行边缘检测显示检测结果。
2)对Lena.tif和baboon.tif分别添加高斯和椒盐噪声,然后对有噪声的图像进行边缘检测,显示检测出的边缘图像
1 2 3 4 5 6 7 8 9
clear all %清空工作空间 I=imread('lena.jpg'); %读入图像 BW=edge(I,'sobel'); %sobel算子分析
BW2=edge(I,'log'); %拉普拉斯算子分析 BW3=edge(I,'prewitt'); %梯度算子分析 J1=imnoise(I,'gaussian',0,0.02); %添加高斯噪声 J2=imnoise(I,'salt & pepper',0.02); %添加椒盐噪声 BW4=edge(J1,'sobel'); %高斯噪声后sobel算子分析 BW5=edge(J2,'log'); %椒盐噪声后laplace算子分
10 析
11 BW6=edge(J1,'log'); %高斯噪声后laplace算子分12 析
13 BW7=edge(J2,'sobel'); %椒盐噪声后sobel算子分析 14 BW8=edge(J1,'prewitt'); %高斯噪声后梯度算子分析 15 BW9=edge(J2,'prewitt'); %椒盐噪声后梯度算子分析
实用文档
16 figure; %显示所需图像 17 subplot(2,2,1);imshow(I);xlabel('原图')
18 subplot(2,2,2);imshow(BW);xlabel('sobel算子分析') 19 subplot(2,2,3);imshow(BW2);xlabel('拉普拉斯算子分析') 20 subplot(2,2,4);imshow(BW3);xlabel('梯度算子分析') 21 figure;
22 subplot(2,2,1);imshow(J1);xlabel('添加高斯噪声')
23 subplot(2,2,2);imshow(BW4);xlabel('高斯噪声后sobel算子分析') 24 subplot(2,2,3);imshow(BW6);xlabel('高斯噪声后拉普拉斯算子分析') 25 subplot(2,2,4);imshow(BW8);xlabel('高斯噪声后梯度算子分析') 26 figure;
27 subplot(2,2,1);imshow(J2);xlabel('添加椒盐噪声')
28 subplot(2,2,2);imshow(BW5);xlabel('椒盐噪声后拉普拉斯算子分析') 29 subplot(2,2,3);imshow(BW7);xlabel('椒盐噪声后sobel算子分析') 30 subplot(2,2,4);imshow(BW9);xlabel('椒盐噪声后梯度算子分析') 31 32 33 34
因篇幅问题不能全部显示,请点此查看更多更全内容