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

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

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

  • 图象显示

  1. 标准图像显示技术
  2. 特殊图象显示技术

  • 图像运算  

              代数运算

             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)  其他统计方式

图像分析

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)        1
   (8,8)        1

S是一个稀疏阵,全显示为:
>> disp(full(S));
     4     0     0     0     4     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
     4     0     0     0     2     0     2     0
     0     0     0     0     0     0     0     0
     0     0     0     0     2     0     1     1
     0     0     0     0     0     0     1     1

过程:

图像的四叉分解

图像的四叉分解


图像的四叉分解

含义:
图像的四叉分解

    3)获得四叉树分解块值:qtdgetblk函数
       4)设置四叉树分解块值:qtsetblk函数

          C 图像调整

            图像调整技术用于图像的改善,包括提高图像信噪比、通过修正图像的颜色和灰度使某些特征更容易识别。
        1)图像灰度调整(imadjust)
       通过调节灰度范围数据,来实现增大或缩小图像对比度效果

            2)使用直方图调整灰度(histeq)
(首先进行直方图均衡,再通过直方图均衡转换灰度图像的亮度值或索引值图像的颜色图值来增强图像对比度,输出图像的直方图近似于给定直方图)
             3)图像色彩加强(decorrstretch)
              

     D 图像平滑

          目的:减少噪声
        3种方法:
1)线性滤波
线性滤波可以从图像中去除特定成分噪音,用imfilter函数实现线性滤波
      B=imfilter(A,H)         其中H为滤波器类型
fspecial:用于建立预定义的滤波算子,其语法格式为:H = fspecial(type)
                                                                                                 H = fspecial(type,para)其中type指定算子的类型,para指定相应的参数;type可以为以下几种:(这部分粘贴来自百度)
                       

'average'

averaging filter

为均值滤波,参数为hsize代表模板尺寸,默认值为[3,3]。

H = FSPECIAL('average',HSIZE) returns an averaging filter H of size

HSIZE. HSIZE can be a vector specifying the number of rows and columns in

H or a scalar, in which case H is a square matrix.

The default HSIZE is [3 3].

折叠'disk'

circular averaging filter

为圆形区域均值滤波,参数为radius代表区域半径,默认值为5.

H = FSPECIAL('disk',RADIUS) returns a circular averaging filter

(pillbox) within the square matrix of side 2*RADIUS+1.

The default RADIUS is 5.

折叠'gaussian'

Gaussian lowpass filter

为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准值,单位为像素,默认值为0.5.

H = FSPECIAL('gaussian',HSIZE,SIGMA) returns a rotationally

symmetric Gaussian lowpass filter

of size HSIZE with standard

deviation SIGMA (positive). HSIZE can be a vector specifying the

number of rows and columns in H or a scalar, in which case H is a

square matrix.

The default HSIZE is [3 3], the default SIGMA is 0.5.

折叠'laplacian'

filter approximating the 2-D Laplacian operator

为拉普拉斯算子,参数alpha用于控制算子形状,取值范围为[0,1],默认值为0.2.

H = FSPECIAL('laplacian',ALPHA) returns a 3-by-3 filter

approximating the shape of the two-dimensional Laplacian

operator. The parameter ALPHA controls the shape of the

Laplacian and must be in the range 0.0 to 1.0.

The default ALPHA is 0.2.

折叠'log'

Laplacian of Gaussian filter

为拉普拉斯高斯算子,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准差,单位为像素,默认值为0.5.

H = FSPECIAL('log',HSIZE,SIGMA) returns a rotationally symmetric

Laplacian of Gaussian filter of size HSIZE with standard deviation

SIGMA (positive). HSIZE can be a vector specifying the number of rows

and columns in H or a scalar, in which case H is a square matrix.

The default HSIZE is [5 5], the default SIGMA is 0.5.

折叠'motion'

motion filter

为运动模糊算子,有两个参数,表示摄像物体逆时针方向以theta角度运动了len个像素,len的默认值为9,theta的默认值为0;

H = FSPECIAL('motion',LEN,THETA) returns a filter to approximate, once

convolved with an image, the linear motion of a camera by LEN pixels,

with an angle of THETA degrees in a counter-clockwise direction. The

filter becomes a vector for horizontal and vertical motions.

The

default LEN is 9, the default THETA is 0, which corresponds to a

horizontal motion of 9 pixels.

折叠'prewitt'

Prewitt horizontal edge-emphasizing filter

用于边缘增强,大小为[3 3],无参数

H = FSPECIAL('prewitt') returns 3-by-3 filter that emphasizes

horizontal edges by approximating a vertical gradient. If you need to

emphasize vertical edges, transpose the filter H: H'.

[1 1 1;0 0 0;-1 -1 -1].

折叠'sobel'

Sobel horizontal edge-emphasizing filter

用于边缘提取,无参数

H = FSPECIAL('sobel') returns 3-by-3 filter that emphasizes

horizontal edges utilizing the smoothing effect by approximating a

vertical gradient. If you need to emphasize vertical edges, transpose

the filter H: H'.

[1 2 1;0 0 0;-1 -2 -1].

折叠'unsharp'

unsharp contrast enhancement filter

为对比度增强滤波器。参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2.

H = FSPECIAL('unsharp',ALPHA) returns a 3-by-3 unsharp contrast

enhancement filter. FSPECIAL creates the unsharp filter from the

negative of the Laplacian filter with parameter ALPHA. ALPHA controls

the shape of the Laplacian and must be in the range 0.0 to 1.0.

The default ALPHA is 0.2.


   2)中值滤波(medfilt2)
            特点:a.非线性处理方法;b.一定条件下克服了线性滤波模糊问题;c.适用滤除脉冲干扰以及图像扫描噪声;d.对于一些细节多,点、线、尖顶部多不宜用;

   3)自适应滤波(wiener2)
                      针对高斯白噪声的去除效果最好

  • 图像区域处理

             1)区域设置
       通过二值掩模来实现。
                a.形状旋转法:(与图像内容和属性无关)可使用MATLAB中的impoint,imline,imrect,imeclipse,imploy,imfreehand分别用于可拉伸点,可拉伸线,矩形区域,椭圆区域,多边形区域和自由选择区域。
b.属性选择法(与图像属性有关)基于颜色使用roicolor函数
     2)区域滤波
               roifilt2
               a.读入灰度图;b.设置处理区域;c.滤波操作

             3)区域填充
                     roifill

  • 形态学操作
       1)图像膨胀
           imdilate()


             2)图像腐蚀
             imerode()
             3)形态学重建
  • 颜色处理
                显示颜色:
                        get(0,‘ScreenDepth’)

               减少颜色
               转换颜色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值