您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 数据挖掘竞赛赛前指导-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=impixelimprofile:沿着图像中一条折线计算并绘制强度图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值变换为逻辑0imhist(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-10xx=0011100diff(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)为中心的邻域内的像素进行运算令结果为该点处处
本文标题:数据挖掘竞赛赛前指导-MATLAB处理图像杨坦.
链接地址:https://www.777doc.com/doc-2333577 .html