文档视界 最新最全的文档下载
当前位置:文档视界 › 数字图像处理代码大全

数字图像处理代码大全

数字图像处理代码大全
数字图像处理代码大全

1.图像反转

MATLAB程序实现如下:

I=imread('xian.bmp');

J=double(I);

J=-J+(256-1); %图像反转线性变换

H=uint8(J);

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

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

2.灰度线性变换

MATLAB程序实现如下:

I=imread('xian.bmp');

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

title('原始图像');

axis([50,250,50,200]);

axis on; %显示坐标系

I1=rgb2gray(I);

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

title('灰度图像');

axis([50,250,50,200]);

axis on; %显示坐标系

J=imadjust(I1,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1]

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

title('线性变换图像[0.1 0.5]');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

K=imadjust(I1,[0.3 0.7],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1]

subplot(2,2,4),imshow(K);

title('线性变换图像[0.3 0.7]');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

3.非线性变换

MATLAB程序实现如下:

I=imread('xian.bmp');

I1=rgb2gray(I);

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

title('灰度图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

J=double(I1);

J=40*(log(J+1));

H=uint8(J);

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

title('对数变换图像');

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系4.直方图均衡化

MATLAB程序实现如下:

I=imread('xian.bmp');

I=rgb2gray(I);

figure;

subplot(2,2,1);

imshow(I);

subplot(2,2,2);

imhist(I);

I1=histeq(I);

figure;

subplot(2,2,1);

imshow(I1);

subplot(2,2,2);

imhist(I1);

5.线性平滑滤波器

用MATLAB实现领域平均法抑制噪声程序:

I=imread('xian.bmp');

subplot(231)

imshow(I)

title('原始图像')

I=rgb2gray(I);

I1=imnoise(I,'salt & pepper',0.02);

subplot(232)

imshow(I1)

title('添加椒盐噪声的图像')

k1=filter2(fspecial('average',3),I1)/255; %进行3*3模板平滑滤波

k2=filter2(fspecial('average',5),I1)/255; %进行5*5模板平滑滤波k3=filter2(fspecial('average',7),I1)/255; %进行7*7模板平滑滤波

k4=filter2(fspecial('average',9),I1)/255; %进行9*9模板平滑滤波

subplot(233),imshow(k1);title('3*3模板平滑滤波');

subplot(234),imshow(k2);title('5*5模板平滑滤波');

subplot(235),imshow(k3);title('7*7模板平滑滤波');

subplot(236),imshow(k4);title('9*9模板平滑滤波'); 6.中值滤波器

用MATLAB实现中值滤波程序如下:

I=imread('xian.bmp');

I=rgb2gray(I);

J=imnoise(I,'salt&pepper',0.02);

subplot(231),imshow(I);title('原图像');

subplot(232),imshow(J);title('添加椒盐噪声图像');

k1=medfilt2(J); %进行3*3模板中值滤波k2=medfilt2(J,[5,5]); %进行5*5模板中值滤波k3=medfilt2(J,[7,7]); %进行7*7模板中值滤波k4=medfilt2(J,[9,9]); %进行9*9模板中值滤波subplot(233),imshow(k1);title('3*3模板中值滤波'); subplot(234),imshow(k2);title('5*5模板中值滤波'); subplot(235),imshow(k3);title('7*7模板中值滤波'); subplot(236),imshow(k4);title('9*9模板中值滤波'); 7.用Sobel算子和拉普拉斯对图像锐化:

I=imread('xian.bmp');

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

title('原始图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

I1=im2bw(I);

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

title('二值图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

H=fspecial('sobel'); %选择sobel算子

J=filter2(H,I1); %卷积运算subplot(2,2,3),imshow(J);

title('sobel算子锐化图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

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

J1=conv2(I1,h,'same'); %卷积运算subplot(2,2,4),imshow(J1);

title('拉普拉斯算子锐化图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

8.梯度算子检测边缘

用MATLAB实现如下:

I=imread('xian.bmp');

subplot(2,3,1);

imshow(I);

title('原始图像');

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I);

subplot(2,3,2);

imshow(I1);

title('二值图像');

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系I2=edge(I1,'roberts');

figure;

subplot(2,3,3);

imshow(I2);

title('roberts算子分割结果');

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系I3=edge(I1,'sobel');

subplot(2,3,4);

imshow(I3);

title('sobel算子分割结果');

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系I4=edge(I1,'Prewitt');

subplot(2,3,5);

imshow(I4);

title('Prewitt算子分割结果');

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系9.LOG算子检测边缘

用MATLAB程序实现如下:

I=imread('xian.bmp');

subplot(2,2,1);

imshow(I);

title('原始图像');

I1=rgb2gray(I);

subplot(2,2,2);

imshow(I1);

title('灰度图像');

I2=edge(I1,'log');

subplot(2,2,3);

imshow(I2);

title('log算子分割结果'); 10.Canny算子检测边缘

用MATLAB程序实现如下:I=imread('xian.bmp'); subplot(2,2,1);

imshow(I);

title('原始图像')

I1=rgb2gray(I);

subplot(2,2,2);

imshow(I1);

title('灰度图像');

I2=edge(I1,'canny'); subplot(2,2,3);

imshow(I2);

title('canny算子分割结果');

11.边界跟踪(bwtraceboundary函数)

clc

clear all

I=imread('xian.bmp');

figure

imshow(I);

title('原始图像');

I1=rgb2gray(I); %将彩色图像转化灰度图像threshold=graythresh(I1); %计算将灰度图像转化为二值图像所需的门限

BW=im2bw(I1, threshold); %将灰度图像转化为二值图像

figure

imshow(BW);

title('二值图像');

dim=size(BW);

col=round(dim(2)/2)-90; %计算起始点列坐标

row=find(BW(:,col),1); %计算起始点行坐标connectivity=8;

num_points=180;

contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_p oints);

%提取边界

figure

imshow(I1);

hold on;

plot(contour(:,2),contour(:,1), 'g','LineWidth' ,2); title('边界跟踪图像');

12.Hough变换

I= imread('xian.bmp');

rotI=rgb2gray(I);

subplot(2,2,1);

imshow(rotI);

title('灰度图像');

axis([50,250,50,200]);

grid on;

axis on;

BW=edge(rotI,'prewitt');

subplot(2,2,2);

imshow(BW);

title('prewitt算子边缘检测后图像');

axis([50,250,50,200]);

grid on;

axis on;

[H,T,R]=hough(BW);

subplot(2,2,3);

imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit'); title('霍夫变换图');

xlabel('\theta'),ylabel('\rho');

axis on , axis normal, hold on;

P=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));

x=T(P(:,2));y=R(P(:,1));

plot(x,y,'s','color','white');

lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7); subplot(2,2,4);,imshow(rotI);

title('霍夫变换图像检测');

axis([50,250,50,200]);

grid on;

axis on;

hold on;

max_len=0;

for k=1:length(lines)

xy=[lines(k).point1;lines(k).point2];

plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');

plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

len=norm(lines(k).point1-lines(k).point2);

if(len>max_len)

max_len=len;

xy_long=xy;

end

end

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan'); 13.直方图阈值法

用MATLAB实现直方图阈值法:

I=imread('xian.bmp');

I1=rgb2gray(I);

figure;

subplot(2,2,1);

imshow(I1);

title('灰度图像')

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

[m,n]=size(I1); %测量图像尺寸参数

GP=zeros(1,256); %预创建存放灰度出现概率的向量

for k=0:255

GP(k+1)=length(find(I1==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置

end

subplot(2,2,2),bar(0:255,GP,'g') %绘制直方图

title('灰度直方图')

xlabel('灰度值')

ylabel('出现概率')

I2=im2bw(I,150/255);

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

title('阈值150的分割图像')

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

I3=im2bw(I,200/255); %

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

title('阈值200的分割图像')

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

14. 自动阈值法:Otsu法

用MATLAB实现Otsu算法:

clc

clear all

I=imread('xian.bmp');

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

title('原始图像')

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系level=graythresh(I); %确定灰度阈值BW=im2bw(I,level);

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

title('Otsu法阈值分割图像')

axis([50,250,50,200]);

grid on; %显示网格线axis on; %显示坐标系15.膨胀操作

I=imread('xian.bmp'); %载入图像I1=rgb2gray(I);

subplot(1,2,1);

imshow(I1);

title('灰度图像')

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

se=strel('disk',1); %生成圆形结构元素

I2=imdilate(I1,se); %用生成的结构元素对图像进行膨胀

subplot(1,2,2);

imshow(I2);

title('膨胀后图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

16.腐蚀操作

MATLAB实现腐蚀操作

I=imread('xian.bmp'); %载入图像

I1=rgb2gray(I);

subplot(1,2,1);

imshow(I1);

title('灰度图像')

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

se=strel('disk',1); %生成圆形结构元素

I2=imerode(I1,se); %用生成的结构元素对图像进行腐蚀

subplot(1,2,2);

imshow(I2);

title('腐蚀后图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

17.开启和闭合操作

用MATLAB实现开启和闭合操作

I=imread('xian.bmp'); %载入图像

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

title('原始图像');

axis([50,250,50,200]);

axis on; %显示坐标系

I1=rgb2gray(I);

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

title('灰度图像');

axis([50,250,50,200]);

axis on; %显示坐标系

se=strel('disk',1); %采用半径为1的圆作为结构元素

I3=imclose(I1,se); %闭合操作subplot(2,2,3),imshow(I2);

title('开启运算后图像');

axis([50,250,50,200]);

axis on; %显示坐标系subplot(2,2,4),imshow(I3);

title('闭合运算后图像');

axis([50,250,50,200]);

axis on; %显示坐标系18.开启和闭合组合操作

I=imread('xian.bmp'); %载入图像subplot(3,2,1),imshow(I);

title('原始图像');

axis([50,250,50,200]);

axis on; %显示坐标系I1=rgb2gray(I);

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

title('灰度图像');

axis([50,250,50,200]);

axis on; %显示坐标系se=strel('disk',1);

I3=imclose(I1,se); %闭合操作

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

title('开启运算后图像');

axis([50,250,50,200]);

axis on; %显示坐标系

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

title('闭合运算后图像');

axis([50,250,50,200]);

axis on; %显示坐标系

se=strel('disk',1);

I4=imopen(I1,se);

I5=imclose(I4,se);

subplot(3,2,5),imshow(I5); %开—闭运算图像title('开—闭运算图像');

axis([50,250,50,200]);

axis on; %显示坐标系

I6=imclose(I1,se);

I7=imopen(I6,se);

subplot(3,2,6),imshow(I7); %闭—开运算图像title('闭—开运算图像');

axis([50,250,50,200]);

axis on; %显示坐标系

19.形态学边界提取

利用MATLAB实现如下:

I=imread('xian.bmp'); %载入图像

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

title('原始图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

I1=im2bw(I);

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

title('二值化图像');

axis([50,250,50,200]);

grid on; %显示网格线

axis on; %显示坐标系

I2=bwperim(I1); %获取区域的周长subplot(1,3,3),imshow(I2);

title('边界周长的二值图像');

axis([50,250,50,200]);

grid on;

axis on;

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

数字图像处理教学大纲(2014新版)

数字图像处理 课程编码:3073009223 课程名称:数字图像处理 总学分: 2 总学时:32 (讲课28,实验4) 课程英文名称:Digital Image Processing 先修课程:概率论与数理统计、线性代数、C++程序设计 适用专业:自动化专业等 一、课程性质、地位和任务 数字图像处理课程是自动化专业的专业选修课。本课程着重于培养学生解决智能化检测与控制中应用问题的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下坚实的理论基础。主要任务是学习数字图像处理的基本概念、基本原理、实现方法和实用技术,并能应用这些基本方法开发数字图像处理系统,为学习图像处理新方法奠定理论基础。 二、教学目标及要求 1.了解图像处理的概念及图像处理系统组成。 2.掌握数字图像处理中的灰度变换和空间滤波的各种方法。 3.了解图像变换,主要是离散和快速傅里叶变换等的原理及性质。 4.理解图像复原与重建技术中空间域和频域滤波的各种方法。 5. 理解解彩色图像的基础概念、模型和处理方法。 6. 了解形态学图像处理技术。 7. 了解图像分割的基本概念和方法。 三、教学内容及安排 第一章:绪论(2学时) 教学目标:了解数字图像处理的基本概念,发展历史,应用领域和研究内容。通过大量的实例讲解数字图像处理的应用领域;了解数字图像处理的基本步骤;了解图像处理系统的组成。 重点难点:数字图像处理基本步骤和图像处理系统的各组成部分构成。 1.1 什么是数字图像处理 1.2 数字图像处理的起源

1.3.1 伽马射线成像 1.3.2 X射线成像 1.3.3 紫外波段成像 1.3.4 可见光及红外波段成像 1.3.5 微波波段成像 1.3.6 无线电波成像 1.3.7 使用其他成像方式的例子 1.4 数字图像处理的基本步骤 1.5 图像处理系统的组成 第二章:数字图像基础(4学时) 教学目标:了解视觉感知要素;了解几种常用的图像获取方法;掌握图像的数字化过程及其图像分辨率之间的关系;掌握像素间的联系的概念;了解数字图像处理中的常用数学工具。 重点难点:要求重点掌握图像数字化过程及图像中像素的联系。 2.1 视觉感知要素(1学时) 2.1.1 人眼的构造 2.1.2 眼镜中图像的形成 2.1.3 亮度适应和辨别 2.2 光和电磁波谱 2.3 图像感知和获取(1学时) 2.3.1 用单个传感器获取图像 2.3.2 用条带传感器获取图像 2.3.3 用传感器阵列获取图像 2.3.4 简单的图像形成模型 2.4 图像取样和量化(1学时) 2.4.1 取样和量化的基本概念 2.4.2 数字图像表示 2.4.3 空间和灰度级分辨率 2.4.4 图像内插 2.5 像素间的一些基本关系(1学时) 2.5.1 相邻像素 2.5.2 临接性、连通性、区域和边界 2.5.3 距离度量 2.6 数字图像处理中所用数学工具的介绍 2.6.1 阵列与矩阵操作

数字图像处理四个实验报告,带有源程序

数字图像处理 实验指导书 学院:通信与电子工程学院 专业:电子信息工程 班级: 学号: 姓名: XX理工大学

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: 亮度图像(Intensity images) 二值图像(Binary images) 索引图像(Indexed images) RGB图像(RGB images)

数字图像处理实验报告

数字图像处理实验报告 实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方 法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread, imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray() 将其 转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程和调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰

度直方图与原灰度直方图的区别。 2) 对B 进行直方图均衡化处理,试比较与源图的异同。 3) 对B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。 图1.1 分段线性变换函数 三、实验原理与算法分析 1. 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。 1) 图像反转 灰度级范围为[0, L-1]的图像反转可由下式获得 r L s --=1 2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围, 如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换: s = c log(1 + r ),c 为常数,r ≥ 0 3) 幂次变换: 0,0,≥≥=γγc cr s 4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

数字图像处理系统毕业设计论文

毕业设计说明书基于ARM的嵌入式数字图像处理系统 设计 学生姓名:张占龙学号: 0905034314 学院:信息与通信工程学院 专业:测控技术与仪器 指导教师:张志杰 2013年 6月

摘要 简述了数字图像处理的应用以及一些基本原理。使用S3C2440处理器芯片,linux内核来构建一个简易的嵌入式图像处理系统。该系统使用u-boot作为启动引导程序来引导linux内核以及加载跟文件系统,其中linux内核与跟文件系统均采用菜单配置方式来进行相应配置。应用界面使用QT制作,系统主要实现了一些简单的图像处理功能,比如灰度话、增强、边缘检测等。整个程序是基于C++编写的,因此有些图像变换的算法可能并不是最优化的,但基本可以满足要求。在此基础上还会对系统进行不断地完善。 关键词:linnux 嵌入式图像处理边缘检测 Abstract This paper expounds the application of digital image processing and some basic principles. The use of S3C2440 processor chip, the Linux kernel to construct a simple embedded image processing system. The system uses u-boot as the bootloader to boot the Linux kernel and loaded with file system, Linux kernel and file system are used to menu configuration to make corresponding configuration. The application interface is made using QT, system is mainly to achieve some simple image processing functions, such as gray, enhancement, edge detection. The whole procedure is prepared based on the C++, so some image transform algorithm may not be optimal, but it can meet the basic requirements. On this basis, but also on the system constantly improve. Keywords:linux embedded system image processing edge detection

数字图像处理实验指导书模板

《数字图像处理》实验指导书 编写: 罗建军 海南大学三亚学院 10月

目录 一、概述 ....................................................................... 错误!未定义书签。 二、建立程序框架 ....................................................... 错误!未定义书签。 三、建立图像类 ........................................................... 错误!未定义书签。 四、定义图像文档实现图像读/写.............................. 错误!未定义书签。 五、实现图像显示 ....................................................... 错误!未定义书签。 六、建立图像处理类................................................... 错误!未定义书签。 七、实现颜色处理功能............................................... 错误!未定义书签。 (一) 亮度处理................................................................. 错误!未定义书签。 (二) 对比度处理............................................................. 错误!未定义书签。 (三) 色阶处理................................................................. 错误!未定义书签。 (四) 伽马变换................................................................. 错误!未定义书签。 (五) 饱和度处理............................................................. 错误!未定义书签。 (六) 色调处理................................................................. 错误!未定义书签。 八、实现几何变换功能............................................... 错误!未定义书签。 (一) 图像缩放................................................................. 错误!未定义书签。 (二) 旋转......................................................................... 错误!未定义书签。 (三) 水平镜像................................................................. 错误!未定义书签。 (四) 垂直镜像................................................................. 错误!未定义书签。 (五) 右转90度................................................................. 错误!未定义书签。 (六) 左转90度................................................................. 错误!未定义书签。 (七) 旋转180度............................................................... 错误!未定义书签。 九、实现平滑锐化功能............................................... 错误!未定义书签。 十、图像处理扩展编程............................................... 错误!未定义书签。

数字图像处理考试

1. 对下列信源符号进行Huffman 编码,并计算其冗余度和压缩率。 符号 a1 a2 a3 a4 a5 a6 概率 0.1 0.4 0.06 0.1 0.04 0.3 原始信源 信源简化 符号 概率 1 2 3 4 a2 0.4 0.4 0.4 0.4 0.6 a6 0.3 0.3 0.3 0.3 0.4 a1 0.1 0.1 0.2 0.3 a4 0.1 0.1 0.1 a3 0.06 0.1 a5 0.04 从最小的信源开始一直到原始的信源 编码的平均长度: 压缩率:13 1.3642.2 R avg n C L ==≈ 冗余度:11110.26691.364D R R C =- =-≈ (0.4)(1)(0.3)(2)(0.1)3(0.1)(4)(0.06)(5)(0.04)(5) 2.2/avg L bit =+++++=()符号

1. 简述灰度分辨率、空间分辨率与图像质量的关系。: 空间分辨率是看原图像转化为数字图像的像素点数,越多图像质量越高;灰度分辨率,即每一个像素点的灰度级数,灰度级越大,图像越清晰. 2. 简述采样和量化的一般原则: 空间坐标的离散化叫做空间采样,而灰度的离散化叫做灰度量化。图像的空间分辨率主要由采样所决定,而图像的幅度分辨率主要由量化所决定。 3. 图像锐化与图像平滑有何区别与联系?: 图象锐化是用于增强边缘,导致高频分量增强,会使图象清晰;图象平滑用于去噪,对图象高频分量即图象边缘会有影响。都属于图象增强,改善图象效果。 4. 伪彩色增强与假彩色增强有何异同点?: 伪彩色增强是对一幅灰度图象经过三种变换得到三幅图象,进行彩色合成得到一幅彩色图像;假彩色增强则是对一幅彩色图像进行处理得到与原图象不同的彩色图像;主要差异在于处理对象不同。 1. 对于椒盐噪声,为什么中值滤波效果比均值滤波效果好?:均值滤波器是一种最常用的线性低通平滑滤波器,可抑制图像中的加性噪声,但同时也使图像变得模糊;中值滤波器是一种最常用的非线性平滑滤波器,可消除图像中孤立的噪声点,又可产生较少的模糊。一般情况下中值滤波的效果要比邻域平均处理的低通滤波效果好,主要特点是滤波后图像中的轮廓比较清晰。因此,滤除图像中的椒盐噪声采用中值滤波。 2.什么是区域?什么是图像分割?:图像分割就是把图像分成若干个特定 的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。 3.写出颜色RGB模型转换到HIS模型的变换公式;并说明HSI模型各分 量的含义及取值围对应的颜色信息。书上 4.灰度图像:当点足够小,观察距离足够远时,人眼就不容易分开各个小 点,从而得到比较连续,平滑的灰度图像。 5.GIF格式:GIF格式是一种公用的图像文件格式,它是8位文件格式, 所以最多只能存储256色图像,不支持24位的真彩色图像。GIF文件中的图像数据均经过压缩,采用的压缩算法是改进的LZW算法,所提供的压缩率通常在1:1到1:3之间,当图像中有随机噪声时效果不好

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

简单数字图像处理系统

数字图像课程设计简单数字图像处理系统 function varargout = untitled(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @untitled_OpeningFcn, ... 'gui_OutputFcn', @untitled_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before untitled is made visible. function untitled_OpeningFcn(hObject, eventdata, handles, varargin) %界面初始化函数 setappdata,'I',0); % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to untitled (see VARARGIN) % Choose default command line output for untitled = hObject;

数字图像处理程序

数字图像处理程序

数字图像处理实验 图像处理实验(一)直方图 灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特 征更加明显。 灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像 增强。 1、灰度直方图 (1)计算出一幅灰度图像的直方图 clear close all I=imread('004.bmp'); imhist(I) title('实验一(1)直方图'); (2)对灰度图像进行简单的灰度线形变换, figure subplot(2,2,1) imshow(I); title('试验2-灰度线性变换'); subplot(2,2,2) histeq(I); (3)看其直方图的对应变化和图像对比度的变化。 原图像 f(m,n) 的灰度范围 [a,b] 线形变换为图像 g(m,n),灰度范围[a’,b’]公式:g(m,n)=a’+(b’-a’)* f(m,n) /(b-a) figure subplot(2,2,1) imshow(I) J=imadjust(I,[0.3,0.7],[0,1],1); title(' 实验一(3)用g(m,n)=a’+(b’-a’)* f(m,n) /(b-a)进行变换 '); subplot(2,2,2) imshow(J) subplot(2,2,3) imshow(I) J=imadjust(I,[0.5 0.8],[0,1],1); subplot(2,2,4) imshow(J) (4) 图像二值化(选取一个域值,(5) 将图像变为黑白图像) figure subplot(2,2,1)

数字图像处理——彩色图像实验报告

6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * * f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %rgb图像转换成8色索引图像,不采用抖动方式 [X1,map1]=rgb2ind(f,8,'nodither'); figure,imshow(X1,map1); %采用抖动方式转换到8色索引图像 [X2,map2]=rgb2ind(f,8,'dither'); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f); %f转换为灰度图像 g1=dither(g);%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);%显示灰度图像 figure,imshow(g1);%显示抖动处理后的二值图像 程序运行结果:

彩色立方体原图 不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像 灰度图像抖动处理后的二值图像

(2)彩色空间转换 f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %转换到NTSC彩色空间 ntsc_image=rgb2ntsc(f); figure,imshow(ntsc_image(:,:,1));%显示亮度信息figure,imshow(ntsc_image(:,:,2));%显示色差信息figure,imshow(ntsc_image(:,:,3));%显示色差信息 %转换到HIS彩色空间 hsi_image=rgb2hsi(f); figure,imshow(hsi_image(:,:,1));%显示色度信息figure,imshow(hsi_image(:,:,2)); %显示饱和度信息figure,imshow(hsi_image(:,:,3));%显示亮度信息 程序运行结果: 原图 转换到NTSC彩色空间

数字图像处理系统论文

数字图像处理系统论文

毕业设计说明书基于ARM的嵌入式数字图像处理系统 设计 学生姓名:张占龙学号: 0905034314 学院:信息与通信工程学院 专业:测控技术与仪器 指导教师:张志杰 2013年 6月

摘要 简述了数字图像处理的应用以及一些基本原理。使用S3C2440处理器芯片,linux内核来构建一个简易的嵌入式图像处理系统。该系统使用u-boot作为启动引导程序来引导linux内核以及加载跟文件系统,其中linux内核与跟文件系统均采用菜单配置方式来进行相应配置。应用界面使用QT制作,系统主要实现了一些简单的图像处理功能,比如灰度话、增强、边缘检测等。整个程序是基于C++编写的,因此有些图像变换的算法可能并不是最优化的,但基本可以满足要求。在此基础上还会对系统进行不断地完善。 关键词:linnux 嵌入式图像处理边缘检测 Abstract This paper expounds the application of digital image processing and some basic principles. The use of S3C2440 processor chip, the Linux kernel to construct a simple embedded image processing system. The system uses u-boot as the bootloader to boot the Linux kernel and loaded with file system, Linux kernel and file system are used to menu configuration to make corresponding configuration. The application interface is made using QT, system is mainly to achieve some simple image processing functions, such as gray, enhancement, edge detection. The whole procedure is prepared based on the C++, so some image transform algorithm may not be optimal, but it can meet the basic requirements. On this basis, but also on the system constantly improve. Keywords:linux embedded system image processing edge detection

数字图像处理实验报告

数字图像处理实验报告

实验一数字图像处理编程基础 一、实验目的 1. 了解MA TLAB图像处理工具箱; 2. 掌握MA TLAB的基本应用方法; 3. 掌握MA TLAB图像存储/图像数据类型/图像类型; 4. 掌握图像文件的读/写/信息查询; 5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法; 6. 编程实现图像类型间的转换。 二、实验内容 1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。 2. 运行图像处理程序,并保存处理结果图像。 三、源代码 I=imread('cameraman.tif') imshow(I); subplot(221), title('图像1'); imwrite('cameraman.tif') M=imread('pout.tif') imview(M) subplot(222), imshow(M); title('图像2'); imread('pout.bmp') N=imread('eight.tif') imview(N) subplot(223), imshow(N); title('图像3'); V=imread('circuit.tif') imview(V) subplot(224), imshow(V); title('图像4');

N=imread('C:\Users\Administrator\Desktop\1.jpg') imshow(N); I=rgb2gary(GRB) [X.map]=gary2ind(N,2) RGB=ind2 rgb(X,map) [X.map]=gary2ind(I,2) I=ind2 gary(X,map) I=imread('C:\Users\dell\Desktop\111.jpg'); subplot(231),imshow(I); title('原图'); M=rgb2gray(I); subplot(232),imshow(M); [X,map]=gray2ind(M,100); subplot(233),imshow(X); RGB=ind2rgb(X,map); subplot(234),imshow(X); [X,map]=rbg2ind(I); subplot(235),imshow(X); 四、实验效果

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 2015年6月18日

目录 实验一图像的读取、存储和显示 (2) 实验二图像直方图分析 (6) 实验三图像的滤波及增强 (15) 实验四噪声图像的复原 (19) 实验五图像的分割与边缘提取 (23) 附录1MATLAB简介 (27)

实验一图像的读取、存储和显示 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像的显示。 二、实验原理 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 三、实验设备 (1) PC计算机 (2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片 四、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower.jpg语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;

数字图像处理车牌识别课程设计matlab实现附源代码

基于matlab的车牌识别系统 一、目的与要求 目的:利用matlab实现车牌识别系统,熟悉matlab应用软件的基础知识,了解了基本程序设计方法,利用其解决数字信号处理的实际应用问题,从而加深对理论知识的掌握,并把所学的知识系统、高效的贯穿到实践中来,避免理论与实践的脱离,巩固理论课上知识的同时,加强实践能力的提高,理论联系实践,提高自身的动手能力。同时不断的调试程序也提高了自己独立编程水平,并在实践中不断完善理论基础,有助于自身综合能力的提高。 要求: 1.理解各种图像处理方法确切意义。 2.独立进行方案的制定,系统结构设计要合理。 3.在程序开发时,则必须清楚主要实现函数的目的和作用,需要在程序书写时说明做适当的注释。如果使用matlab来进行开发,要理解每个函数的具体意义和适用范围,在写课设报告时,必须要将主要函数的功能和参数做详细的说明。 4、通过多幅不同形式的图像来检测该系统的稳定性和正确性。 二、设计的内容 学习MATLAB程序设计,利用MATLAB函数功能,设计和实现通过设计一个车牌识别系统。车牌识别系统的基本工作原理为:将手机拍摄到的包含车辆牌照的图像输入到计算机中进行预处理,再对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后将其逐个与创建的字符模板中的字符进行匹配,匹配成功则输出,最终匹配结束则输出则为车牌号码的数字。车牌识别系统的基本工作原理图如图1所下所示:

三、总体方案设计 车辆牌照识别整个系统主要是由车牌定位和字符分割识别两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符识别可以分为字符分割和单个字符识别两个模块。 为了用于牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。但由于是采用智能手机在开放的户外环境拍照,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。 牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。 由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。因此,需要将拍出的车牌进行处理,在这个过程中,我采用画图工具,将汽车图像的车牌部分进行裁剪,并将车牌的蓝色部分过亮的地方颜色加深,还将车牌中的一个白色的原点抹去,另外还将车牌上的铆钉使用车牌的蓝色背景覆盖,这样分割出的字符更加准确。 车牌识别的最终目的就是对车牌上的文字进行识别。主要应用的为模板匹配方法。 因为系统运行的过程中,主要进行的都是图像处理,在这个过程中要进行大量的数据处理,所以处理器和内存要求比较高,CPU要求主频在600HZ及以上,内存在128MB 及以上。系统可以运行于Windows7、Windows2000或者Windows XP操作系统下,程序调试时使用matlabR2011a。 四、各个功能模块的主要实现程序 (一)首先介绍代码中主要的函数功能及用法:

数字图像处理实验

学院计算机与通信工程学院专业生物医学工程专业 班级51111 学号5111133 姓名杨静 指导教师贾朔 2014年04月21日

实验一图像的基本运算 一、实验目的: 1、掌握图像处理中的点运算、代数运算、逻辑运算和几何运算及应用。 2、掌握各种运算对于图像处理中的效果。 二、实验内容: 1、(1)选择一幅图像lena8.jpg,设置输入/输出变换的灰度级范围,a=0.2,b=0.6,c=0.1,d=0.9. (2)设置非线性扩展函数的参数c=2. (3)采用灰度级倒置变换函数s=255-r进行图像变换 (4)设置二值化图像的阈值,分别为level=0.4,level=0.7 解:参考程序如下: I=imread('C:\lena8.jpg'); figure; subplot(2,3,1); imshow(I); title('原图'); J=imadjust(I,[0.3;0.6],[0.1;0.9]); %设置灰度变换的范围 subplot(2,3,2); imshow(J); title('线性扩展'); I1=double(I); %将图像转换为double类型 I2=I1/255; %归一化此图像 C=2; K=C*log(1+I2); %求图像的对数变换 subplot(2,3,3); imshow(K); title('非线性扩展'); M=im2bw(I,0.5); M=~M; %M=255-I; %将此图像取反 %Figure subplot(2,3,4); imshow(M); title('灰度倒置'); N1=im2bw(I,0.4); %将此图像二值化,阈值为0.4 N2=im2bw(I,0.7); %将此图像二值化,阈值为0.7 subplot(2,3,5); imshow(N1); title('二值化阈值0.4'); subplot(2,3,6); imshow(N2); title('二值化阈值0.7');

相关文档
相关文档 最新文档