当前位置:文档之家› 用MATLAB确定图像中某一字母位置

用MATLAB确定图像中某一字母位置

用MATLAB确定图像中某一字母位置
用MATLAB确定图像中某一字母位置

用MATLAB确定图像中字母的区域

姓名:张坤峰

学号:13721495

目录

1 绪论 (3)

1.1引言 (3)

1.2背景及意义 (3)

1.3字符识别原理概述 (3)

1.4主要工作 (4)

2图像预处理 (5)

2.1输入待处理的原始图像: (5)

2.2图像的灰度化: (5)

2.3进行开操作得到背景图像: (6)

2.4对图像进行增强处理: (6)

2.5取得最佳阈值,图像二值化: (7)

3字母的定位 (8)

3.1设计算法 (8)

3.2图像的变换公式 (8)

3.3主程序 (9)

3.4 结果及分析 (9)

4总结 (10)

1 绪论

1.1引言

视觉信息是人的主要感觉来源,人类认识外在世界的信息很多是通过视觉提供的。人类是通过眼睛与大脑来获取、处理和理解视觉信息的。视觉不仅指对光信号的感受,它包括了对视觉信息的获取、传输、处理、存储与理解的全过程。·语言和文字是人类文明的标志,也是人们进行交流和沟通的主要媒介。

随着计算机、信息技术的高速发展,使用计算机处理和识别文字信息也就成为了一个非常重要的研究领域。计算机文字识别,又称之为光电字符识别(Optical Character Recognition,OCR),就是利用一定的光电设备将印刷或手写在纸(或其它介质)上的字符输入到计算机中并对其进行自动辨识。字符识别技术是模式识别的一个重要分支,它涉及模式识别、图像处理、数字信号处理、自然语言理解、人工智能、模糊数学、信息论、计算机等学科,是一门综合性技术。

1.2背景及意义

计算机视觉研究的主要是通过计算机分析景物的二维图像,从中获得三维世界的结构和属性等信息。目前,计算机视觉己在遥感图像分析、文字识别、医学图像处理等领域取得了广泛应用。

尽管人们对字符识别的研究已从事了很长时间,并已取得了很多成果,但到目前为止,机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题,因此它们对于模式识别等学科和理论来说,仍有较强的研究价值和意义。同时,字符识别的研究,对于进一步提高复杂环境条件下的文字识别的准确率,解决视频图像的文字检测和识别,手写体等各种文字的识别,以及对各种图像识别技术和应用问题,都具有重要的借鉴和启发作用。

1.3字符识别原理概述

字符识别实质上就是由计算机自动识别各种字符,生成计算机可识别的内部编码。

本文内容是字母识别。目前,字母识别中有两个主要研究方向,一是新的识别算法的研究,使得一些复杂的或运算量大的算法能够得以实现。二是集成方法的研究,字符集成识别是综合集成方法论与字符识别技术的结合。它一方面寻求新的特征提取和识别方法,另一方面着眼于系统的体系结构。由于采用多种识别方法,多种字符特征,并针对具体问题有效地将多个识别器组合管理起来,特征之间具有多样化的关系,最终的识别效果通常会优于每一个成员分类器。

一个基本的字符识别系统可以用下面的框图来概括,主要由计算机视觉系统和模式识别系统两大部分组成,其中计算机视觉系统包括图像的采集模块、图像的预处理模块和图像分割模块,模式识别系统包括特征提取模块和识别模块,如图1.1所示:

图像的采集是指借助光学数字影像设备(光学扫描仪,数码相机,数码摄像机)将需要识别的字符图像转换成数字图像输入到计算机系统。

图像预处理是把原始图像转化为较为理想的灰度图像,去除图像中的噪声畸变等现象,增强图像中有用的信息,以便于识别。预处理是字符识别的第一步,占有十分重要的地位,预处理的好坏将直接影响识别方法的难易及识别结果的好坏。预处理做得好,使反映字符本质特征的部分突显出来,识别率高且识别速度快。反之,就会使识别变得困难,甚至造成误识。

图像分割模块是将图像中的目标从背景中分割出来,这一步也至关重要。

特征提取是将待识别图像中有代表性的特征提取出来,并对提取的大量特征进行简化和分类,以便于识别。字符特征一般分为两大类:结构特征和统计特征。

最后所提取的特征交给分类器模块进行比较计算,给出鉴别结果。

字符识别的后处理是指根据字符所处的上下文或者其它约束条件,对识别结果的校正或检验。

在本文中我们的工作内容到图像的分割模块。

1.4主要工作

字符识别具有广阔的前景,仍有许多技术难点需要解决。本文研究了字母块图像预处理、特征提取、字母分割的过程,主要有以下几个方面的工作:(1) 预处理阶段

本文的研究对象是字母的识别,其背景单一但难以区分,但字母数量有限,且是印刷体,形状规则。根据以上特点,本文首先将图像进行灰度化,将图像转换为只包含亮度信息的灰度图像,以达到改善画质和增强对比度的目的;其次对图像进行了增强操作,突出图像中感兴趣的区域。图像增强实质上消除或减弱噪声,改善图像质量,使图像变清晰的过程。

在预处理阶段,本文还研究了图像的平滑去噪,抑制或减弱了噪声影响,达到改善画质的目的。最后的处理阶段是图像的边缘检测,根据图像边缘灰度有跳跃变化的特性,检测出图像边缘,将感兴趣区域与背景图像分离。

(2)字母块图像定位与分割

在进行了上述预处理操作之后,字母块图像已经从背景中分离出来,但是要实现字母的识别还需将字母分割出来。字母的位置确定之后,结合字母的特点采用自适应阈值方法将字母分割出来,以待识别。

2图像预处理

2.1输入待处理的原始图像:

clear ;

close all;

%Step1 获取图像装入待处理彩色图像并显示原始图像

Scolor = imread('text.jpg');%imread函数读取图像文件

图2.1原始图像

2.2图像的灰度化:

彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。由彩色转换为灰度的过程叫做灰度化处理。选择的标准是经过灰度变换后,像素的动态范围增加,图像的对比度扩展,使图像变得更加清晰、细腻、容易识别。

%将彩色图像转换为黑白并显示

Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图

figure,imshow(Sgray),title('原始黑白图像');

图2.2原始黑白图像

2.3进行开操作得到背景图像:

s=strel('disk',13);%strei函数

Bgray=imopen(Sgray,s);%打开sgray s图像

figure,imshow(Bgray);title('背景图像');%输出背景图像

图2.3背景图像

2.4对图像进行增强处理:

Egray=imsubtract(Sgray,Bgray);%两幅图相减

figure,imshow(Egray);title('增强黑白图像');%输出黑白图像

图2.4黑白图像

2.5取得最佳阈值,图像二值化:

二值图像是指整幅图像画面内仅黑、白二值的图像。在实际的车牌处理系统中,进行图像二值变换的关键是要确定合适的阀值,使得字符与背景能够分割开来,二值变换的结果图像必须要具备良好的保形性,不丢掉有用的形状信息,不会产生额外的空缺等等。车牌识别系统要求处理的速度高、成本低、信息量大,采用二值图像进行处理,能大大地提高处理效率。阈值处理的操作过程是先由用户指定或通过算法生成一个阈值,如果图像中某中像素的灰度值小于该阈值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0。

fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型

fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型

level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值

bw22=im2bw(Egray,level);%转换图像为二进制图像

bw2=double(bw22);

figure,imshow(bw2);title('图像二值化');%得到二值图像

图2.5二值图像

3字母的定位

3.1设计算法

此次,我们希望在图像text.jpg中定位字母“a”,那么我们首先将包含字母“a”的图像与text.jpg图像进行相关运算,也就是首先将字母a和图像text.jpg进行傅立叶变换,然后利用快速卷积的方法,计算字母a和图像text.jpg的卷积,提取卷积运算的峰值,然后选择一个适当阈值,只显示像素超过阈值的,从而得到白色亮点,这即是在图像text.jpg中对字母a”的定位结果。

3.2图像的变换公式

(1) fft2

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

i=imread('e:\wtext.jpg');

j=fft2(i);

(2) ifft2

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

i=imread('e:\wtext.jpg');

j=fft2(i);

k=ifft2(j);

(3) 利用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);

3.3主程序

程序如下:

I=imread('text.jpg');%读入图像‘text.jpg’

a=I(28:62,16:48);%从图像中抽取字母a的图像

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

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

C=real(ifft2(fft2(I).*fft2(rot90(a,2),242,346)));

subplot(2,2,3),imshow(C,[]);

thresh=11500000;%找到C中的那个最大值,选择一个小于该数的数值作为阈值subplot(2,2,4),imshow(C>thresh);%显示像素超过阈值的

3.4 结果及分析

将所用图片text.jpg放入MATLAB的work文件夹中,打开MATLAB新建

M_file,将程序输进去,保存运行。运行结果如下图所示。

图运行结果

右下角的图像中3个亮点就是原图中字母a的位置。

4总结

本文研究的是字母在图像中的定位,包括图像的采集、预处理以及定位字母的过程。在目前对图像处理方面的研究基础上,进行了更深一步的研究和改进。本文从字母块图像的采集和处理出发,涉及了数字图像处理、模式识别等理论与应用方面的研究,主要做了以下几点工作:

1.本文通过阅读大量文献,对字符识别的研究背景和国内外研究现状都有了深刻的了解,对于字母图像从采集到预处理再到字母的识别的过程进行了详细深入的研究。涉及到最佳方法的选择、算法的改进、精确结果的实现等等。

2.综合利用图像处理、图像分析和图像理解技术,对采集到的字母块图像进行图像增强、边缘检测、图像定位与分割以及字符识别等处理。在分析归纳了前人研究成果的基础上,进行了改进尝试,也采用了一些新的处理方法。

3. 图像增强部分首先进行了灰度拉伸操作使图像的对比度增强,之后采用直方图均衡化的操作对图像的直方图进行了修正,最后是图像的平滑去噪。

4.图像定位是根据字母图像的特征采用直接扫描的方法定位出字母区域,最后利用阈值变换方法将字母分割出来。

非常全非常详细的MATLAB数字图像处理技术

MATLAB数字图像处理 1 概述 BW=dither(I)灰度转成二值图; X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap; [X,map]=gray2ind(I,n)灰度到索引; [X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。灰度图n默认64,二值图默认2; X=graylice(I,n)灰度图到索引图,门限1/n,2/n,…,(n-1)/n,X=graylice(I,v)给定门限向量v; BW=im2bw(I,level)灰度图I到二值图; BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余置0,level在[0,1]之间。 BW=im2bw(RGB,level)RGB到二值图; I=ind2gray(X,map)索引图到灰度图; RGB=ind2rgb(X,map)索引图到RGB; I=rgb2gray(RGB)RGB到灰度图。 2 图像运算 2.1 图像的读写 MATLAB支持的图像格式有bmp,gif,ico,jpg,png,cur,pcx,xwd和tif。 读取(imread): [1] A=imread(filename,fmt) [2] [X,map]=imread(filename,fmt) [3] […]=imread(filename) [4] […]=imread(URL,…) 说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map 为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。URL表示引自Internet URL中的图像。 写入(imwrite): [1] R=imwrite(A,filename,fmt); [2] R=imwrite(X,map,filename,fmt); [3] R=imwrite(…,filename); [4] R=imwrite(…,Param1,V al1,Param2,Val2) 说明:针对第四个,该语句用于指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。例如HDF的Quality,Compression,WriteMode;JPEG的BitDepth,Comment:Empty or not,Mode:lossy or lossless,Quality等。 2.2 图像的显示 方法1:使用Image Viewer(图像浏览器),即运用imview函数。 同时显示多帧图像的所有帧,可用到montage函数。

Matlab 图像处理相关函数命令大全

Matlab 图像处理相关函数命令大全 一、通用函数: colorbar 显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \ [...]=getimage imshow 显示图像 语法:imshow(I,n) \ imshow(I,[low high]) \ imshow(BW) \ imshow(X,map) \ imshow(RGB)\ imshow(...,display_option) \ imshow(x,y,A,...) \ imshow filename \ h=imshow(...) montage 在矩形框中同时显示多幅图像 语法:montage(I) \ montage(BW) \ montage(X,map) \ montage(RGB) \ h=montage(...) immovie 创建多帧索引图的电影动画 语法:mov=immovie(X,map) \ mov=immovie(RGB) subimage 在一副图中显示多个图像 语法:subimage(X,map) \ subimage(I) \ subimage(BW) \ subimage(RGB) \ subimage(x,y,...) \ subimage(...) truesize 调整图像显示尺寸 语法:truesize(fig,[mrows mcols]) \ truesize(fig)

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

数字图像平滑滤波在MATLAB上的实现

第 5 章图像平滑滤波在MATLAB上的实现 本课程设计在MATLAB上实现的程序和结果 I=imread('b.bmp'); v=0.5*ones(size(I)); I1=imnoise(I,'localvar',v); I2=imnoise(I,'salt & pepper',0.02); I3=imnoise(I,'speckle',0.02); figure; subplot(221); hold on; title('原图像'); imshow(I); hold off; subplot(222); hold on; title('受高斯噪声污染的图像'); imshow(I1); hold off; subplot(223); hold on; title('受椒盐噪声污染的图像'); imshow(I2); hold off; subplot(224); hold on; title('受乘性噪声污染的图像'); imshow(I3); hold off;

原图像受高斯噪声污染的图像 受椒盐噪声污染的图像受乘性噪声污染的图像 h=ones(3,3)/9; J1=imfilter(I1,h); J2=imfilter(I2,h); J3=imfilter(I3,h); figure; subplot(221); hold on; title('原图像'); imshow(I); hold off; subplot(222); hold on; title('对有高斯噪声的3*3邻域平均后的图像'); imshow(J1); hold off; subplot(223); hold on; title('对有椒盐噪声的3*3邻域平均后的图像'); imshow(J2); hold off; subplot(224); hold on; title('对有乘性噪声的3*3邻域平均后的图像'); imshow(J3);

matlab图像处理的几个实例

Matlab图像处理的几个实例(初学者用) 1.图像的基本信息及其加减乘除 clear,clc; P=imread('yjx.jpg'); whos P Q=imread('dt.jpg'); P=im2double(P); Q=im2double(Q); gg1=im2bw(P,0.3); gg2=im2bw(P,0.5); gg3=im2bw(P,0.8); K=imadd(gg1,gg2); L=imsubtract(gg2,gg3); cf=immultiply(P,Q); sf=imdivide(Q,P); subplot(421),imshow(P),title('郁金香原图'); subplot(422),imshow(gg1),title('0.3'); subplot(423),imshow(gg2),title('0.5'); subplot(424),imshow(gg3),title('0.8'); subplot(425),imshow(K),title('0.3+0.5'); subplot(426),imshow(L),title('0.5-0.3'); subplot(427),imshow(cf),title('P*Q'); subplot(428),imshow(sf),title('P/Q'); 2.图像缩放 clear,clc; I=imread('dt.jpg'); A=imresize(I,0.1,'nearest'); B=imresize(I,0.4,'bilinear'); C=imresize(I,0.7,'bicubic'); D=imresize(I,[100,200]); F=imresize(I,[400,100]); figure subplot(321),imshow(I),title('原图'); subplot(322),imshow(A),title('最邻近插值'); subplot(323),imshow(B),title('双线性插值'); subplot(324),imshow(C),title('二次立方插值'); subplot(325),imshow(D),title('水平缩放与垂直缩放比例为2:1'); subplot(326),imshow(F),title('水平缩放与垂直缩放比例为1:4');

matlab中图像函数大全

Matlab中图像函数大全 图像增强 除高频噪声 1、lps 2、中值滤波(非线性) 3、空域模板滤波 1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X,map) 就算和显示索引色图像 X 的直方图,map 为调色板。用 stem(x,counts) 同样可以显示直方图。 1.2 imcontour 函数 功能:显示图像的等灰度值图 格式:imcontour(I,n),imcontour(I,v) 说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。 1.3 imadjust 函数 功能:通过直方图变换调整对比度 格式:J=imadjust(I,[low high],[bottom top],gamma) newmap=imadjust(map,[low high],[bottom top],gamma) 说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;newmap=imadjust(map,[low high],[bottom top],gamma) 调整索引色图像的调色板 map 。此时若 [low high] 和 [bottom top] 都为2×3的矩阵,则分别调整 R、G、B 3个分量。 1.4 histeq 函数 功能:直方图均衡化 格式:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...) newmap=histeq(X,map,hgram) newmap=histeq(X,map) [new,T]=histeq(X,...)

MATLAB实现频域平滑滤波以及图像去噪代码

用MATLAB实现频域平滑滤波以及图像去噪代码 悬赏分:50 - 解决时间:2008-11-8 14:21 是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在MATLAB上运行成功,必然给分。具体的实验指导书上的要求如下: 频域平滑滤波实验步骤 1. 打开Matlab 编程环境;

2. 利用’imread’函数读入图像数据; 3. 利用’imshow’显示所读入的图像数据; 4. 将图像数据由’uint8’格式转换为’double’格式,并将各点数据乘以 (-1)x+y 以便FFT 变换后的结果中低频数据处于图像中央; 5. 用’fft2’函数对图像数据进行二维FFT 变换,得到频率域图像数据; 6. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示频率域图 像; 7. 在频率图像上去除滤波半径以外的数据(置0); 8. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示处理过的 频域图像数据; 9. 用’ifft2’函数对图像数据进行二维FFT 逆变换,并用’real’函数取其实部,得到处理过的空间域图像数据; 10. 将图像数据各点数据乘以(-1)x+y; 11. 利用’imshow’显示处理结果图像数据; 12. 利用’imwrite’函数保存图像处理结果数据。 图像去噪实验步骤: 1. 打开Matlab 编程环境; 2. 利用’imread’函数读入包含噪声的原始图像数据; 3. 利用’imshow’显示所读入的图像数据; 4. 以3X3 大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声 图像进行滤波处理; 5. 利用’imshow’显示处理结果图像数据; 6. 利用’imwrite’函数保存图像处理结果数据。 即使不是按这些步骤来的也没关系,只要是那个功能,能实现就OK,谢谢大家 %%%%%%%%spatial frequency (SF) filtering by low pass filter%%%%%%%% % the SF filter is unselective to orientation (doughnut-shaped in the SF % domain). [FileName,PathName,FilterIndex] = uigetfile ; filename = fullfile(PathName, FileName) ; [X map] = imread(filename, fmt); % read image L = double(X); % transform to double %%%%%%%%%%%%% need to add (-1)x+y to L % calculate the number of points for FFT (power of 2) fftsize = 2 .^ ceil(log2(size(L))); % 2d fft Y = fft2(X, fftsize(1), fftsize (2));

MATLAB图像处理相关函数

一、通用函数: colorbar显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \ [...]=getimage imshow 显示图像 语法:imshow(I,n) \ imshow(I,[low high]) \ imshow(BW) \ imshow(X,map) \ imshow(RGB)\ imshow(...,display_option) \ imshow(x,y,A,...) \ imshow filename \ h=imshow(...) montage 在矩形框中同时显示多幅图像 语法:montage(I) \ montage(BW) \ montage(X,map) \ montage(RGB) \ h=montage(...) immovie 创建多帧索引图的电影动画 语法:mov=immovie(X,map) \ mov=immovie(RGB) subimage 在一副图中显示多个图像 语法:subimage(X,map) \ subimage(I) \ subimage(BW) \ subimage(RGB) \ subimage(x,y,...) \ subimage(...) truesize 调整图像显示尺寸 语法:truesize(fig,[mrows mcols]) \ truesize(fig) warp 将图像显示到纹理映射表面 语法:warp(X,map) \ warp(I ,n) \ warp(z,...) warp(x,y,z,...) \ h=warp(...) zoom 缩放图像 语法:zoom on \ zoom off \ zoom out \ zoom reset \ zoom \ zoom xon \ zoom yon\ zoom(factor) \ zoom(fig,option) 二、图像文件I/O函数命令 imfinfo 返回图形图像文件信息 语法:info=imfinfo(filename,fmt) \ info=imfinfo(filename) imread 从图像文件中读取(载入)图像 语法:A=imread(filename,fmt) \ [X,map]=imread(filename,fmt) \

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图 title('均衡化后图像直方图') %在均衡化后直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 (a)原始图像 (b)均衡化后图像

图像平滑方法综述与MATLAB实现之欧阳家百创编

江苏科技大学 数字图像处理本科生课程论文 论文题目:图像平滑方法综述与MATLAB实现完成时间:11月20日 所在专业:信息与计算科学

图像平滑方法综述与MATLAB实现 摘要:在图像的生成、传输或变换的过程中,由于多种因素的影响,总要造成图像质量的下降,这就需要进行图像增强。随着图像处理领域的迅速发展,图像平滑作为图像增强的重要环节,也逐渐受到人们的关注。图像平滑的目的为了消除噪声。图像平滑可以在空间域进行,也可以在频率域进行。空间域常用的方法有领域平均法、中值滤波和多图像平均法;在频率域,因为噪声频谱多在高频段,因此可以采用各种形式的低通滤波方法进行平滑处理。 关键词:图像平滑;消除噪声;领域平均法;中值滤波;低通滤波法……… 1 研究背景 总所周知,实际获得的图像在形成、传输接收和处理的过程中,不可避免地存在着外部干扰和内部干扰,如光电转换过程中敏感元件灵敏度的不均匀性、数字化过程中的量化噪声、传输过程中的误差以及人为因素等,均会使图像质量变差,需要进行图像的平滑处理。 图像平滑是一种实用的熟悉图像处理技术,一个较好的平滑处理方法应该既能消除图像噪声,又不使图像边缘轮廓和线条变模糊,这就是研究数字图形平滑处理要追求的目标。 2.主要理论概况 2.1 邻域平均法 邻域平均法就是对含噪声的原始图像的每一个像素点取一个邻域,计算中所有像素灰度级的平均值,作为邻域平均处理后的图像的像素值。即 式中, ),为邻域中像素的点数。

是预先设定的阈值,当某些点的灰度值与其邻域点灰度平均值之差不超过阈值式中, 时,仍保留这些点的灰度值。当某些点的灰度值与其邻点灰度的均值差别较大时,这些点必然是噪声,这时再取其邻域平均值作为这些点的灰度点。这样平滑后的图像比单纯的进行邻域平均后的图像要清晰一些,平滑效果仍然很好。 2.2 中值滤波 中值滤波是一种非线性处理技术,由于它在实际运算过程中并不需要知道图像的统计特性,所以比较方便。中值滤波最初是应用在一维信号处理技术中,后来被二维的图像处理技术所引用。在一定条件下,中值滤波可以克服线性滤波器所带来的图像细节模糊,而且对滤波除脉干扰及图像扫描噪声非常有效。但是对一些细节多,特别是点、线、尖顶较多的图像则不宜采用中值滤波的方法。中值滤波的目的是保护图像边缘的同时去除噪声。 2.2.1 中值滤波的主要原理 中值滤波实际上就是用一个含有奇数个像素的滑动窗口,将窗口正中点的灰度值用窗口内各点的中值代替。例如若窗口长度为5,窗口中像素的灰度值分别为80、90、200、110、120,则中值为110,于是原来窗口正中的200就由110代替。 设有一个一维序列,用窗口长度为m(m为奇数)的窗口对该序列进行中值 滤波,就是从序列中相继抽出m 个数其中为窗口中心值,,再将这m个点的值按其数值大小排列,取其序号为正中间的那个值作为滤波器的输出。用数学公式可表示为 对二维序列进行中值滤波时,滤波窗口也是二维的,只不过这种二维窗口可以有各种不同的形状,如线状、方形,圆形、十字形和圆环形等。二维数据的中值滤波可以表示为 A为窗口

基于MATLAB图像处理报告

基于M A T L A B图像处理报告一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。 、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。

用MatLab制作的几个数学函数图像

文字加注: x=-1.5:0.001:1.5; y=(x.^2-1).^3+1; plot(x,y) title('\fontsize{14}\fontname{宋体}函数图像:y=(x^2-1)^3+1') xlabel('\fontsize{14}x'),ylabel('\fontsize{14}y') text(-1,1.1,'\fontsize{8}点(1,1)处倒数为零,但无极值') x=-10:1:10; y=-(x-5).^2+2; [y_max,x_max]=max(y); num2str(y_max); num2str(x_max); plot(x,y) hold on plot(y_max,t_max,'r.') hold off 字符串的应用: a=2; w=3; t=0:0.01:10; y=exp(-a*t).*sin(w*t); [y_max,t_max]=max(y); t_text=['t=',num2str(t (t_max))]; y_text=['y=',num2str(y_max)]; max_text=char('maxinum',t_text,y_text); tit=['字符串的应用:y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; hold on plot(t,y,'b') plot(t(t_max),y_max,'r.')%最大值处以红点标示 text(t(t_max)+0.3,y_max+0.05,max_text) title(tit),xlabel('t'),ylabel('y') hold off 求近似极限,修补图形缺口: t=-2*pi:pi/10:2*pi; y=sin(t)./t; tt=t+(t==0)*eps;%逻辑数组参与运算,用“机械零”代替零元素 yy=sin(tt)./tt;%用数值可算的sin(eps)/eps近似替代sin(0)/0 subplot(1,2,1),plot(t,y),title('残缺图形 '),xlabel('t'),ylabel('y'),axis([-7,7,-0.5,1.2]) subplot(1,2,2),plot(tt,yy),title('正确图形 '),xlabel('tt'),ylabel('yy'),axis([-7,7,-0.5,1.2])

图像处理matlab程序实例

程序实例 1旋转: x=imread('d:\MATLAB7\work\flower.jpg'); y=imrotate(x,200,'bilinear','crop'); subplot(1,2,1); imshow(x); subplot(1,2,2); imshow(y) 2.图像的rgb clear [x,map]=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh1.jpg');y=x(90:95,90:95);imshow(y)R=x(90:95,90:95,1);G=x(90:95,90:95,2);B=x(90:95,90:95,3);R,G,B 3.加法运算clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh3.jpg');J=imnoise(I,'gaussian',0,0.02);%向图片加入高斯噪声subplot(1,2,1),imshow(I);%显示图片subplot(1,2,2),imshow(J);K=zeros(242,308);%产生全零的矩阵,大小与图片的大小一样for i=1:100%循环100加入噪声J=imnoise(I,'gaussian',0,0.02);J1=im2double(J);K=K+J1;end K=K/100; figure,imshow(K);save

4.减法 clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); J=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao1.jpg'); K=imsubtract(I,J);%实现两幅图相减 K1=255-K;%将图片求反显示 figure;imshow(I); title('有噪声的图'); figure;imshow(J); title('原图'); figure;imshow(K1); title('提取的噪声'); save 5.图像的乘法 H=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); I=immultiply(H,1.2);将此图片乘以1.2 J=immultiply(H,2); subplot(1,3,1),imshow(H); title('原图'); subplot(1,3,2),imshow(I); title('·放大1.2'); subplot(1,3,3),imshow(J); title('放大2倍'); 6除法运算 moon=imread('moon.tif'); I=double(moon); J=I*0.43+90; K=I*0.1+90; L=I*0.01+90; moon2=uint8(J); moon3=uint8(K); moon4=uint8(L); J=imdivide(moon,moon2); K=imdivide(moon,moon3); L=imdivide(moon,moon4); subplot(2,2,1),imshow(moon); subplot(2,2,2),imshow(J,[]); subplot(2,2,3),imshow(K,[]); subplot(2,2,4),imshow(L,[]);

图像边缘检测各种算子MATLAB实现以及实际应用

《图像处理中的数学方法》实验报告 学生姓名:赵芳舟 教师姓名:曾理 学院:数学与统计学院 专业:信息与计算科学 学号: 联系方式: 梯度和拉普拉斯算子在图像边缘检测中的应用

一、数学方法 边缘检测最通用的方法是检测灰度值的不连续性,这种不连续性用一阶和二阶导数来检测。 1.(1)一阶导数:一阶导数即为梯度,对于平面上的图像来说,我们只需用到二维函数 的梯度,即:,该向量的幅值: ,为简化计算,省略上式平方根,得到近似值;或通过取绝对值来近似,得到:。 (2)二阶导数:二阶导数通常用拉普拉斯算子来计算,由二阶微分构成: 2.边缘检测的基本思想: (1)寻找灰度的一阶导数的幅度大于某个指定阈值的位置; (2)寻找灰度的二阶导数有零交叉的位置。 3.几种方法简介 (1)Sobel边缘检测器:以差分来代替一阶导数。Sobel边缘检测器使用一个3×3邻域的行和列之间的离散差来计算梯度,其中,每行或每列的中心像素用2来 加权,以提供平滑效果。 -1-21 000 121 -101 -202 -101

(2)Prewitt边缘检测器:使用下图所示模板来数字化地近似一阶导数。与Sobel检测器相比,计算上简单一些,但产生的结果中噪声可能会稍微大一些。 -1-1-1 000 111 -101 -101 -101 (3)Roberts边缘检测器:使用下图所示模板来数字化地将一阶导数近似为相邻像素之间的差,它与前述检测器相比功能有限(非对称,且不能检测多种45°倍数的边缘)。 -10 01 0-1 10 (4)Laplace边缘检测器:二维函数的拉普拉斯是一个二阶的微分定义: 010 1-41 010

最常用的matlab图像处理的源代码

最常用的一些图像处理Matlab源代 码 #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白噪声和椒盐噪声的影响 #6:采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波 #7:采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 #8:图像的自适应魏纳滤波 #9:运用5种不同的梯度增强法进行图像锐化 #10:图像的高通滤波和掩模处理 #11:利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理 #12:利用巴特沃斯(Butterworth)高通滤波器对受噪声干扰的图像进行平滑处理 1.数字图像矩阵数据的显示及其傅立叶变换 f=zeros(30,30); f(5:24,13:17)=1; imshow(f, 'notruesize'); F=fft2(f,256,256); % 快速傅立叶变换算法只能处矩阵维数为2的幂次,f矩阵不 % 是,通过对f矩阵进行零填充来调整 F2=fftshift(F); % 一般在计算图形函数的傅立叶变换时,坐标原点在 % 函数图形的中心位置处,而计算机在对图像执行傅立叶变换 % 时是以图像的左上角为坐标原点。所以使用函数fftshift进 %行修正,使变换后的直流分量位于图形的中心; figure,imshow(log(abs(F2)),[-1 5],'notruesize');

2 二维离散余弦变换的图像压缩I=imread('cameraman.tif'); % MATLAB自带的图像imshow(I); clear;close all I=imread('cameraman.tif'); imshow(I); I=im2double(I); T=dctmtx(8); B=blkproc(I,[8 8], 'P1*x*P2',T,T'); Mask=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',Mask); % 此处为点乘(.*) I2=blkproc(B2,[8 8], 'P1*x*P2',T',T); figure,imshow(I2); % 重建后的图像 3.采用灰度变换的方法增强图像的对比度I=imread('rice.tif'); imshow(I); figure,imhist(I); J=imadjust(I,[0.15 0.9], [0 1]); figure,imshow(J); figure,imhist(J);

基于MATLAB图像处理报告

基于MATLAB图像处理报告 一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 3.1、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。 3.2、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载

Matlab中图像函数大全 2

Matlab中图像函数大全2 matlab 2009-10-26 21:08:13 阅读900 评论0 字号:大中小订阅 边学边和大家交流,我将我在学习中搜集到的资料和大家分享! 图像处理函数详解——strel 功能:用于膨胀腐蚀及开闭运算等操作的结构元素对象(本论坛随即对膨胀腐蚀等操作进行讲解)。 用法:SE = strel(shape,parameters) 创建由指定形状shape对应的结构元素。其中shape的种类有 arbitrary' 'pair' 'diamond' 'periodicline' 'disk' 'rectangle' 'line' 'square' 'octagon 参数parameters一般控制SE的大小。 例子: se1 = strel('square',6) % 创建6*6的正方形 se2 = strel('line',10,45) % 创建直线长度10,角度45 se3 = strel('disk',15) % 创建圆盘半径15 se4 = strel('ball',15,5) % 创建椭圆体,半径15,高度5

图像处理函数详解——roipoly 功能:用于选择图像中的多边形区域。 用法:BW = roipoly(I,c,r) BW = roipoly(I) BW = roipoly(x,y,I,xi,yi) [BW,xi,yi] = roipoly(...) [x,y,BW,xi,yi] = roipoly(...) BW = roipoly(I,c,r)表示用向量c、r指定多边形各点的X、Y坐标。BW选中的区域为1,其他部分的值为0. BW = roipoly(I)表示建立交互式的处理界面。 BW = roipoly(x,y,I,xi,yi)表示向量x和y建立非默认的坐标系,然后在指定的坐标系下选择由向量xi,yi指定的多边形区域。 例子:I = imread('eight.tif'); c = [222 272 300 270 221 194]; r = [21 21 75 121 121 75]; BW = roipoly(I,c,r); imshow(I) figure, imshow(BW) 图像处理函数详解——roifilt2 功能:用于对一个区域进行滤波。 用法:J = roifilt2(h,I,BW) J = roifilt2(I,BW,fun) J = roifilt2(I,BW,fun,P1,P2,...) J = roifilt2(h,I,BW)表示使用滤波器h对图像I中用二值掩模BW选中的区域滤波。BW为和I大小相同的二值图像。

图像运算的MATLAB实现

rice=imread(‘rice.png’); % 读入图像 I=double(rice); % 数据类型转换 J=I*0.43+60; % 像素点算术运算 rice2=uint8(J) % 数据类型转换subplot(1,2,1),imshow(rice); % 原图绘制subplot(1,2,2),imshow(rice2); % 计算后图像绘制

X = uint8([ 255 10 75; 44 225 100]); Y = uint8([ 50 20 50; 50 50 50 ]); Z = imdivide(X,Y)

I = imread('rice.png'); % 读入图像background = imopen(I,strel('disk',15)); % 图像开运算Ip = imdivide(I,background); % 图像除法运算imshow(Ip,[]) % 显示运算后的图像

I = imread('rice.png'); % 读入图像 J = imdivide(I,2); % 图像除以一个常数subplot(1,2,1), imshow(I) % 显示原始图像subplot(1,2,2), imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像J = imlincomb(2,I); % 灰度值放大imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像 J = uint8(filter2(fspecial('gaussian'), I)); % 图像滤波 K = imlincomb(1,I,-1,J,128); % K(r,c) = I(r,c) - J(r,c) + 128 % 图像相减后加上一个常数figure, imshow(K) % 显示运算后的图像

相关主题
文本预览
相关文档 最新文档