MATLAB图像处理技术 读书笔记(1)

从学校毕业之后,就比较迷茫,不知道自己积累的东西需要用怎样的方式留存下来,放在脑子里容易忘,而且不拿出来系统处理一下,也没办法形成系统,所以,我觉得用“技术笔记”或者“读书笔记”的方式记下来,是一个技术人应该做好的事情。

所以,我们开始吧。

RGB图像是每个像素有24位大小,分为三个通道,每个通道8位,2的8次方等于256,可以表示256个等级

索引,就是把色彩编个号,我记录每个像素的色彩的时候,不用写RGB各个分量大小是多少,只需要写是几号颜色

图像就是一个矩阵,一般先说行数,再说列数

图像的空间分辨率,像素每英寸

稀疏的意思就是,很多像素的值是相同的,并没有那么“丰富”“多样”的像素在这个图里面

缩小一幅图像会丢失细节,此时再放大这个图像不能恢复更多细节

灰度级分辨率,也叫辐射计量分辨率,因为是标记了每一个像素的亮度等级

进行图像处理的基本步骤:处理(修改和增强),分析(检测和测量),识别(性质和相互关系)

图像处理的一些活动,主要包括:点运算,几何变换,图像增强,小波变换,图像复原,彩色图像处理,形态学图像处理,图像分割,目标的表示与描述,特征提取,对象识别

预备知识:邻接的概念,连通性的概念,区域和边界的概念

几种距离的度量:欧氏距离(就是平面上的两个点对应座标之差的平方和开方),街区距离(就是两个点对应座标之差的绝对值之和),棋盘距离(就是两个点对应座标之差的绝对值,取大的那个)

图像处理的点运算:就是对单个像素点进行操作

邻域运算:对一个小范围内的像素进行操作,比如灰度变换

线性操作:就是指这个操作是线性的,也就是F(ax+by)=aFx+bFy

==================

下面是关于MATLAB专门的知识

addpath,能够添加一个路径

genpath,能够添加该目录下所有的目录作为路径

whos,能够展示工作区当中的所有变量

rand是均匀分布    randn是正态分布随机数

size能够获得所有维度

A(:)能够输出这个矩阵按列存储的一维向量

*是矩阵乘法

.*是矩阵对应元素相乘,两个矩阵尺寸应该相同

^是矩阵的幂

.^是矩阵对应元素的幂,就是操作符后面的矩阵每个元素都是前面矩阵或者标量每个对应元素的指数

{}是元胞,里面能够包含好几种不同类型的变量

a.b是结构体,a里面能够放很多不同的b,用于访问,显示,引用

eig是求一个矩阵的特征向量

编程技巧:多层嵌套的for非常笨拙,不如使用点乘来进行批量操作

meshgrid是能够输入一个向量,输出一个矩阵,矩阵具有行递增列相同或者列递增行相同的性质,能够用来当作座标使用

例如,(A,B)=meshgrid(a,b),其中a,b均为1-100的序列,那么AB分别是两个100*100的矩阵

分配内存:MATLAB不用特地分配内存,只需要在使用某个变量之前声明他是zeros()就可以了

=======================

图像有很多种类:

①灰度图像,双精度的话就是0和1两种取值,八位灰度值就是0-255

②RGB图像,红绿蓝的顺序,一副图像的尺寸是(m*n*3),其中m是行,n是列,3当中,1是红通道,23是绿和蓝

③索引图,一个像素的色值不再以红绿蓝为通道进行存储,而是一个序号,对应到一个N*3的表,其中双精度的序号没有偏移,8位存储的序号偏移一个(从0开始)

④二值图,只有0和1,是unit8型

⑤多帧图像,尺寸是m*n*3*帧数,它们共同拥有同一个颜色索引表

====================================

一些MATLAB操作

cat【dim,a,b】,把两个矩阵a和b按照在第dim个维度上联接起来

imshow,只能显示一帧图像

rgb2gray,rgb转灰度图

im2double,unit8型转double型,取值上,【0-255】归一化到【0-1】

im2unit8,转回unit8,即上边的逆操作,取值也是

imread,读取图像,可以读取索引表

imwrite,写图像,可以存储索引表

iminfo,查看图像信息,很丰富

imshow,【low,high】的缺省参数,这是灰度的上下限,拉伸显示,直方图均衡的效果

subplot,是画小图,(m,n,p),是画m*n个小图,现在处理第p个

impixelinfo,可以显示鼠标所在位置的像素位置和像素值

imdistline,可以通过鼠标点击,查看两点之间的距离

==============================

几种比较常用的灰度图操作

①imhist,计算灰度直方图,如果指定n,那就是n个灰度区间(而不是256个),没有赋值语句就会直接绘制出来

如果用【counts,x】=imhist(图),就会把灰度数量和灰度等级赋值给counts和x

然后再stem(x,counts)的话,也能画图,一样的

归一化直方图,就是不显示某个灰度的像素数量而是比例,counts除以mn之积就行了

②线性灰度变换,能够增加图像对比度,亮度,反相等等

具体操作就是F(Da)=FaDa+Fb=Db,把Da灰度值变成了Db灰度值

③非线性灰度变换,指数变换,就是t=c*log(1+s),把s变成了t,这个操作可以把比较暗的地方细节增大,因为低像素值的区域被拉开了

④非线性灰度变换,gama变换,就是y=(esp+x)^r,当r>1,曲线是凹的,亮部细节放大,当r<1,曲线是凸的,暗部细节放大,当r=1,就是整体的线性操作

函数是imadjust(I,【】,【】,r)

⑤灰度阈值变换, 还没看到这里,待完善。

 

*加粗的地方我还不太确定,等以后修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章