您的位置:首页 > 编程语言 > MATLAB

MATLAB图像处理基础知识学习总结(MATLAB操作命令)

2016-08-29 20:47 686 查看

matlab一些指令,便于后期查询

这些知识感觉学完还是记不住,这里自己总结了哈,希望能够加强记忆


图象显示

标准图像显示技术
特殊图象显示技术


图像运算  

              代数运算

             a.图像相减取绝对值差:K=imabsdiff(I,J)  

             b.图像求补:h=imcomplement(I)

              空间变换

             a.缩放图像

                            imresize

             b.旋转图像

                            imrotate

             c.修建图像

                            mcrop

             d.空间变换

                          imtransform
              图像配准


图像数据变换

      二维傅立叶

iff2

离散余弦

a.   dct2函数

b.    dctmtx函数

其他变换 

1)radon变换:

2)fanbeam变换:

                 


图像分析与增强

        A像素值及统计

             1)impixel :计算像素数据值
             2)improfile:计算和绘制图像中一条或多条线段上的所有象素的灰度值(沿图像路径数据值)
             3)   contour(I,N):(中文意思为轮廓):这个函数显示灰度图的等值线轮廓,能够自动设置坐标对象与显示图像相匹配,这里N指定了等高线的条数
     4)  imhist:    (图像柱状图【直方图】),显示索引图或灰度图的灰度分布,索引的图像只支持一个图层,并且只有一个索引彩色通道。
     5)  其他统计方式

B 图像分析

MATLAB图像分析技术可以提取图像的结构信息,利用edge探测边界

首先回顾一下边缘检测的一般步骤:

边缘检测算法一般包含如下四个步骤:

  1.滤波(去噪)

  2.增强(一般是通过计算梯度幅值)

  3.检测(在图像中有许多点的梯度幅值会比较大,而这些点并不都是边缘,所以应该用某种方法来确定边缘点,比如最简单的边缘检测判据:梯度幅值阈值)

  4.定位(有的应用场合要求确定边缘位置,可以在子像素水平上来估计,指出边缘的位置和方向)

 边缘检测方法比较常用的有基于各种算子的方法,有基于一阶导数的各种算子(Roberts、Sobel、Prewitt等),还有基于二阶导数的拉普拉斯算子等。其中一阶导数一般找梯度极大值。二阶导数找过零点(需要忽略无意义的过零点(即均匀零区))。

1) 灰度图像的边缘检测:edge函数
BW=edge(I,method,thresh,direction/sigma)
其中method可以取‘sobel’【注:在边缘检测中,常用的一种模板是Sobel
算子。Sobel 算子有两个,一个是检测水平边缘的 ;另一个是检测垂直边缘的 】

 'prewitt'【注:Prewitt算子是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。】
'roberts'【注:Roberts边缘算子是一个2x2的模板,采用的是对角方向相邻的两个像素之差。从图像处理的实际效果来看,边缘定位较准,对噪声敏感。】
'log'【注:用高斯滤波器的拉普拉斯运算对I进行滤波,然后通过寻找0相交检测边缘】
‘zerocross’【注:用指定的滤波器对I滤波厚,寻找0相交边缘检测】
'canny'【 用高斯滤波器计算得到的局部最大梯度来检测边缘】
'thresh'【注:用于指定灵敏阈值】
‘sigma’【指定标准差】
小结:在上面的方法中,canny边缘检测比较清晰,log与zerocross除了有canny检测的轮廓,还有其他的杂边,而剩下边缘检测方法边检测不太全阿。

2)四叉树分解:qtdecomp函数(这部分转自uleen博客)
       

 
 
   一个简单的示例(来自MATLAB help for qtdecomp):
原始矩阵:
I =
    1    1    1    1    2    3    6    6
    1    1    2    1    4    5    6    8
    1    1    1    1    7    7    7    7
    1    1    1    1    6    6    5    5
   20   22   20   22    1    2    3    4
   20   22   22   20    5    4    7    8
   20   22   20   20    9   12   40   12
   20   22   20   20   13   14   15   16
>> S = qtdecomp(I,.05) %执行四叉分解,阈值为0.05,实际上的阈值是ceil(0.05*255)=13,因为I是uint8类的
S =
   (1,1)        4
   (5,1)        4
   (1,5)        4
   (5,5)        2
   (7,5)        2
   (5,7)        2
   (7,7)        1
   (8,7)        1
   (7,8)      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: