数据挖掘竞赛赛前指导-MATLAB处理图像杨坦.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

“泰迪杯”全国数据挖掘挑战赛组委会第四届挑战赛赛前指导“泰迪杯”全国数据挖掘挑战赛组委会用MATLAB处理图像杨坦2019年12月29日“泰迪杯”全国数据挖掘挑战赛组委会上午大家的问题山东交通学院问题:关于编程语言,C/C++可不可以?学生需要完成的编码工作大概有多少五邑大学:对数据库的建立有没有什么建议2“泰迪杯”全国数据挖掘挑战赛组委会图像处理简介“泰迪杯”全国数据挖掘挑战赛组委会数字图像的基本概念数字图像表示为一个数据矩阵注意原点的位置(京东方面有特别的规定)4“泰迪杯”全国数据挖掘挑战赛组委会数字图像的基本概念Matlab中的数组下标从1开始,故在Matlab中f(m,n)存储了第m行、第n列的像素的信息51,11,21,2,12,22,,1,2,[,]NNMMMNfffffffmnfff“泰迪杯”全国数据挖掘挑战赛组委会数字图像的基本概念图像分类灰度图像:保存每个点(像素)的亮度(光的强弱)信息,通常将白到黑划分为256个等级,使用8位二进制证书保存对应于一个二维数组f(M,N)彩色图像:保存每个点的色彩信息对应于一个三维数组f(M,N,3)[f(i,j,1),f(i,j,2),f(i,j,3)]对应于像素[i,j]的[R,G,B]数据二值图像:对应一个二维的逻辑数组灰度图像也可能使用RGB格式来保存当R、G、B三个分量的值相同时,色彩为中性灰6“泰迪杯”全国数据挖掘挑战赛组委会图像的读入A=imread('filename.fmt')该函数把filename中的图像读到变量A中f1=imread('rose.tif');f2=imread('ocr.jpg');保存在MATLAB工作路径下的图像可像上面这样根据文件名读入;也可以指定读取路径f3=imread('C:\ray.jpg');MATLAB的路径设置7“泰迪杯”全国数据挖掘挑战赛组委会图像的读入查看图像类型(灰度/真彩色)size()size函数专门用来获得矩阵的大小信息x=[123],则size(x)为[13]x=ones(3,4),则size(x)为[34]获得图像大小参数[m,n]=size(f)m为行数,n为列数二值图像要查看数据的类型8“泰迪杯”全国数据挖掘挑战赛组委会图像的显示imshow():在窗口中显示图像imshow是图像(image)和显示(show)的缩合,包括灰阶调整功能的图像显示。对于RGB彩色图像,采用格式imshow(f)灰度图像基本语法:imshow(f,G)用G级离散灰度级显示灰度图象f若省略N,默认用256级灰度显示imshow(f,[])自动调整灰度最大化动态范围figure:新建图像窗口,否则会覆盖掉之前的显示内容9“泰迪杯”全国数据挖掘挑战赛组委会图像像素的查看impixel:返回选中像素或像素集的数据值。用户可以直接将该像素坐标作为该函数的输入,或者用鼠标选中像素。x=impixelimprofile:沿着图像中一条折线计算并绘制强度图10“泰迪杯”全国数据挖掘挑战赛组委会图像的写入(保存)格式:imwrite(f,'filename','fmt')把图像写入图形文件中例1:imwrite(f,'patient10_run1','tif')例2:imwrite(f,'patient10_run1.tif')把图像f写入文件filename中filename指明文件名fmt指明文件格式f既可以是一个灰度图,也可以是一个真彩色图像filename中未指定路径,则保存至当前工作目录11“泰迪杯”全国数据挖掘挑战赛组委会图像的数据类型图像通常按照8位无符号整数的格式保存,读入后为无符号整数类型,所能够进行的运算受到限制。使用double函数转换为双精度浮点型可以方便后续处理若图像是double类,则使用imshow显示前应归一化亮度到[0,1],否则可能会造成显示问题。A=imread('ocr.jpg');B=double(A);imshow(B)mat2gray函数可以将任意类型的矩阵归一化到[0,1]12“泰迪杯”全国数据挖掘挑战赛组委会图像的数据类型二值图像:一个逻辑数组,每个象素只能取0或1利用logical函数可以把数值数组转换为二值数组:B=logical(A)若A中除了有1和0之外的其他元素,则使用logical可将所有非零的量变换为逻辑1,将所有的0值变换为逻辑0imhist(A)B=A125以125为阈值进行二值化处理13“泰迪杯”全国数据挖掘挑战赛组委会二值化:图像分割g=im2bw(f,T)阈值处理:f中亮度小于T的像素在g中取值为0,其余为1输出为logical类无论f的类型,T的范围必须在[0,1]内,默认为0.5对整型数据,系统会自动根据f的类型作相应的归一化处理对double类数据,必须首先做归一化处理14“泰迪杯”全国数据挖掘挑战赛组委会向量索引数组的值用方括号括起来,各值间用空格或逗号隔开:v=[13579]数组元素的存取通过一维索引(下标)进行,用圆括号括起来v的第一个元素:v(1)matlab中数组下标从1开始v的前三个元素:v(1:3)v的第2到第4个元素:v(2:4)15“泰迪杯”全国数据挖掘挑战赛组委会向量索引v的第3到最后一个元素:v(3:end)向量转置W=v.’若v是一个向量,则v(:)为一列向量v(1:end)为一行向量使用步长的不连续索引v(1:2:end)v(end:-2:1)16“泰迪杯”全国数据挖掘挑战赛组委会矩阵索引矩阵的表示:用方括号括起来并用分号隔开各行A=[123;456;789]矩阵(二维数组)采用双下标来索引,A(m,n)表示第m行第n列的元素取出一列:C3=A(:,3)取出一行:R2=A(2,:)取出前两行:T2=A(1:2,1:3)?=A(1:2,:)17“泰迪杯”全国数据挖掘挑战赛组委会矩阵索引使用向量作为矩阵索引E=A([13],[23]):A的1、3行,2、3列上的元素矩阵寻址:构造逻辑数组D=logical([100;001;000])A(D)使用冒号(:):数组在matlab中按列存放,A(:)会将该数组的全部元素以逐列的方式排列成一个列向量18“泰迪杯”全国数据挖掘挑战赛组委会矩阵索引使用数组索引进行简单的图像操作f=imread('rose.tif');imshow(f)fp=f(end:-1:1,:);%上下翻转figure,imshow(fp)fp=f(257:768,257:768);%截取部分数据figure,imshow(fp)fs=f(1:2:end,1:2:end);%图像缩小(二取一)figure,imshow(fs)plot(f(512,:))%扫描线19“泰迪杯”全国数据挖掘挑战赛组委会图像处理简“泰迪杯”全国数据挖掘挑战赛组委会=imread('ocr.jpg');%读入图像imshow(A);%显示图像B=rgb2gray(A);%将真彩色图像转化为灰度图像figure,imshow(B)%显示灰度图像figure,imhist(B);%显示图像的直方图a=graythresh(B)%计算二值化所需的阈值C=im2bw(B,a);%二值化figure,imshow(C)%显示二值化后的结果21“泰迪杯”全国数据挖掘挑战赛组委会=sum(not(C),2);%沿行方向进行投影(累加)%这里的not()是逻辑否size(b)%注意投影数组的维数figure,plot(b)%绘制投影曲线c=b50;%比较运算的结果是逻辑值figure,plot(c)%绘制数组c如何找出每行的起、止行号?22“泰迪杯”全国数据挖掘挑战赛组委会=diff(c);%对数组c进行差分运算Y=diff(X)=[X(2)-X(1)X(3)-X(2)...X(m)-X(m-1)]xx=[0011100];diff(xx)=0100-10xx=0011100diff(xx)中1的位置提前了,-1的位置不用改动23“泰迪杯”全国数据挖掘挑战赛组委会=find(d==1)+1%定位每行开始的行号e2=find(d==-1)%定位每行结束的行号e=[e1';e2'];%合成记录行位置的二维数组%e1、e2要转置为行向量D=C(e(1,1):e(2,1),:);%提取第一行文字的图像如何实现自动化?[m,n]=size(e);%获取e的行列数,n代表了文字的行数fori=1:nD=C(e(1,i):e(2,i),:);24“泰迪杯”全国数据挖掘挑战赛组委会(D)%显示切分出来的第一行文字f=sum(not(D),1);%在列方向上计算目标像素的投影figure,plot(f)%显示投影数组g=f0;h=diff(g);k1=find(h==1)+1%定位每个字符开始的列号k2=find(h==-1)%定位每个字符结束的列号k=[k1;k2];%合成记录字符列位置的二维数组使用循环将字符位置写入box文件25“泰迪杯”全国数据挖掘挑战赛组委会=imread('ocr2.jpg');imshow(A)B=rgb2gray(A);figure,imshow(B)%显示灰度图像a=graythresh(B)%计算二值化所需的阈值C=im2bw(B,a);%二值化figure,imshow(C)该如何解决?26“泰迪杯”全国数据挖掘挑战赛组委会复杂图像的情况思路:寻找文字部分的稳健的特征图像锐化:凸显图像中的细微部份或增强已经模糊的细节找出文字的边缘微分算子会使图像锐化,使常量区域为027“泰迪杯”全国数据挖掘挑战赛组委会复杂图像的情况计算数字函数的导数以差分的形式实现,有不同的定义用于一阶导数的定义需要满足:(1)在平坦段必须为零(常数灰阶值区域)(2)在灰阶步阶或斜面起始处必须不为零(3)沿着斜面必须不为零28)()1(xfxfxf“泰迪杯”全国数据挖掘挑战赛组委会复杂图像的情况二次导数的任何定义需要:(1)在平的区域必须为零(2)在灰阶步阶或斜函数的起始以及尾端必须不为零(3)沿着有常数斜率之斜面必须为零将二阶导数定义成差分式对二维函数而言29)(2)1()1(22xfxfxfxf),(4)]1,()1,(),1(),1([2yxfyxfyxfyxfyxff“泰迪杯”全国数据挖掘挑战赛组委会复杂图像的情况采用空间滤波的方式实现图像的锐化空间滤波是一种邻域操作定义中心点(x,y)对于先定义的以(x,y)为中心的邻域内的像素进行运算令结果为该点处处

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功