2018-03-21 09:42:25 Chaolei3 阅读数 2238

以免文字表达不够直观,直接上图来说明空间域的处理方法。
这里写图片描述
下面逐一对上面提到的方法介绍一下。

数值运算

正如下面一张图展示那样,因为要结合具体的操作对象,所以数值运算基本可以分为对单通道图像的处理以及对多通道图像的处理。
这里写图片描述
单通道的点运算就是直接处理像素点的值,例如对数变换,幂律变换,分段变换等都是将一个数学公式应用到每一个像素点。而邻域运算比较典型常见的就是滤波器了,像均值平滑,高斯平滑,sobel滤波器等。

集合运算

同一幅图像以及不同图像之间进行的求并集,交集,差集的基本运算。
这里写图片描述
比如图像镶嵌就是寻找两幅图像的并集(重叠区)叠放在一起,然后形成了一张新的图像,直观上是图像变大了。如下图:
这里写图片描述

逻辑运算

逻辑运算相比较而言就比较简单了,因为都是逻辑矩阵,只有0,1两种情况。基本上与我们以往的逻辑运算差不多,只是此时大多是矩阵的形式。
这里写图片描述

数学形态学操作

这里写图片描述

2019-06-29 21:47:37 weixin_43760067 阅读数 223

3.1空间域处理方法概述
一、 变换域处理方法(包括正变换和反变换):对图像像元数据的空间表示f(x,y),先进行某种变换,然后针对变换数据进行处理。
空间域处理方法:根据图像像元数据的空间表示f(x,y),进行处理。
二、空间域处理方法:数值运算、集合运算、逻辑运算(布尔运算)、数学形态学操作

3.2数值运算
一、数值运算:单波段操作:(1)点运算
(2)邻域运算
多波段操作:(1)代数运算
(2)剖面运算
二、单波段点运算
1、线性点运算:一般用于图像的整体增强
2、分段线性点运算:一般用于图像局部灰度增强
3、非线性点运算:变换函数:(1)指数变换:压缩暗的部分,增强亮的部分
(2)对数变换:增强暗的部分,压缩亮的部分
非线性点运算一般用于图像局部灰度增强:高斯拉伸:高斯函数的形状
平方根拉伸:类似对数方式拉伸,暗的地方被拉伸,亮的地方被压缩
3.3集合运算
一、集合运算:空间操作:(1)图像裁剪:规则裁剪、不规则裁剪
(2)图像镶嵌
波段操作:(1)波段提取
(2)波段叠加
二、图像裁剪:(1)扩大研究区域裁剪
(2)计算坡度后裁剪
三、图像镶嵌:(1)对于图像镶嵌来说,待镶嵌的图像在重叠区应该具有相似的色调,纹理等特征。
(2)对于图像镶嵌来说,拼接线尽量选择在差异明显的自然地物交界处。
(3)对于图像镶嵌来说,如果拼接线两边的色调差异较大,则需考虑对拼接线两边附近的图像作匀色处理。
四、图像镶嵌的步骤:(1)选择图像,设计镶嵌方案
(2)图像的几何配准
(3)相邻图像颜色匹配
(4)图像镶嵌:需考虑重叠区的图像选择问题,为此需要先在重叠区内绘制一条连接两边图像的拼接线,使得根据这条 拼接线拼接起来的新图像浑然一体,不露拼接的痕迹。
五、波段操作:波段提取、波段叠加

3.4逻辑运算
一、逻辑运算(布尔运算):求反运算
与运算
或运算
异或运算:当两幅输入图像对应像元的值不同时,输出图像像元的值才为1

3.5数学形态学运算
一、数学形态学操作:两个基本过程:腐蚀、膨胀
(1)二值形态学
(2)灰度形态学
二、数学形态应用:图像去噪声、图像增强、图像分割
1.开运算:使用同一结构对图像先腐蚀再膨胀的运算
2.闭运算:使用同一结构对图像先膨胀再腐蚀的运算
三、灰度形态学:1、腐蚀:相减——>最小
2、膨胀:相加——>最大
开闭和闭开:去掉峰值和噪声点

2012-03-25 12:34:00 songqqnew 阅读数 2209
滤波过程就是在图像f(x,y)中逐点移动模板(即滤波器),使模板中心和点(x,y)重合,滤波器在每一点的响应是根据模板的具体内容并通过预先定义的关系计算的。

将图像的模板在图像中逐像素移动,并对每个像素进行指定数量的计算的过程就是卷积过程。

包括图像的平滑和锐化。平滑用于去除噪声,锐化用于加强边缘。
在平滑处理中平滑的对象是噪声而不是边缘,在锐化处理中锐化的对象是边缘而不是噪声。
包括平滑滤波器(低通滤波器)和锐化滤波器(高通滤波器) p171
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

5.3图像平滑

imfilter滤波
>> help imfilter

 IMFILTER Multidimensional image filtering.
    B = IMFILTER(A,H) filters the multidimensional array A with the
    multidimensional filter H.  A can be logical or it can be a 
    nonsparse numeric array of any class and dimension.  The result, 
    B, has the same size and class as A.
 
    Each element of the output, B, is computed using double-precision
    floating point.  If A is an integer or logical array, then output 
    elements that exceed the range of the given type are truncated, 
    and fractional values are rounded.
 
    B = IMFILTER(A,H,OPTION1,OPTION2,...) performs multidimensional
    filtering according to the specified options.  Option arguments can
    have the following values:
 
    - Boundary options
        X            Input array values outside the bounds of the array
                     are implicitly assumed to have the value X.  When no
                     boundary option is specified, IMFILTER uses X = 0.
 
        'symmetric'  Input array values outside the bounds of the array
                     are computed by mirror-reflecting the array across
                     the array border.
 
        'replicate'  Input array values outside the bounds of the array
                     are assumed to equal the nearest array border
                     value.
 
        'circular'   Input array values outside the bounds of the array
                     are computed by implicitly assuming the input array
                     is periodic.
 
    - Output size options
      (Output size options for IMFILTER are analogous to the SHAPE option
      in the functions CONV2 and FILTER2.)
 
        'same'       The output array is the same size as the input
                     array.  This is the default behavior when no output
                     size options are specified.
 
        'full'       The output array is the full filtered result, and so
                     is larger than the input array.
 
    - Correlation and convolution
 
        'corr'       IMFILTER performs multidimensional filtering using
                     correlation, which is the same way that FILTER2
                     performs filtering.  When no correlation or
                     convolution option is specified, IMFILTER uses
                     correlation.
 
        'conv'       IMFILTER performs multidimensional filtering using
                     convolution.
 
    Example 
    -------------
        rgb = imread('flowers.tif'); 
        h = fspecial('motion',50,45); 
        rgb2 = imfilter(rgb,h); 
        imshow(rgb), title('Original') 
        figure, imshow(rgb2), title('Filtered') 
        rgb3 = imfilter(rgb,h,'replicate'); 
        figure, imshow(rgb3), title('Filtered with boundary replication')
 
    See also CONV2, CONVN, FILTER2. 

平均模板滤波器
    I=imread('baby_noise.bmp');       
    subplot(1,4,1);;imshow(I);title('source');    
    
    h=fspecial('average',3);%3x3模板    
    I3=imfilter(I,h,'corr','replicate');%执行滤波,replicate重复     
    subplot(1,4,2);;imshow(I3);title('3');    
        
    h=fspecial('average',5);%5x5模板    
    I5=imfilter(I,h,'corr','replicate');    
    subplot(1,4,3);;imshow(I5);title('5');    
        
    h=fspecial('average',7);%7x7模板    
    I7=imfilter(I,h,'corr','replicate');    
    subplot(1,4,4);;imshow(I7);title('7');   
 


高斯模板:由于平均模板对邻域内的像素一视同仁,为了减少平滑处理中的模糊,得到更自然的平滑效果,则会很自然的想到适当加大模板中点的权重,随着远离中心点,权重迅速减少,从而可以确保中心点看起来更接近与他距离更近的点,基于这种考虑的模板是高斯模板。
高斯模板的名字由来是二维高斯函数,即二维正态分布函数。方差是sigma。
sigma过小,偏离中心的所有像素的权重将会非常小,相当于没有滤波效果。反之相反。

I=imread('baby_noise.bmp');    
subplot(1,4,1);imshow(I);title('source'); 

h=fspecial('gaussian',3,0.5);%3是板数0.5是sigma  
I3_5=imfilter(I,h);  
subplot(1,4,2);imshow(I3_5);title('3_5');  
  
h=fspecial('gaussian',3,0.8);  
I3_8=imfilter(I,h);  
subplot(1,4,3);imshow(I3_8);title('3_8');  
  
h=fspecial('gaussian',5,0.8);  
I5_8=imfilter(I,h);  
subplot(1,4,4);imshow(I5_8);title('5_8');


中值滤波
    I=imread('lena.gif');%灰度图像    
    subplot(1,4,1);imshow(I3);title('I');    
    
    J=imnoise(I,'salt & pepper');%添加椒盐噪声。黑点同胡椒,白点同盐粒。
    subplot(1,4,2);imshow(J);title('J');    

    h=fspecial('average',3);%3x3模板    
    I3=imfilter(I,h,'corr','replicate');%执行滤波,replicate重复   
    subplot(1,4,3);imshow(I3);title('3X3平均');    
    
    J=medfilt2(J,[3,3]);%中值滤波
    subplot(1,4,4);imshow(I3);title('medfilt2');   


、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
5.5图像锐化

图像锐化主要用于增强图像中的灰度跳变部分,这一点与图像平滑对灰度跳变的抑制作用刚好相反。事实上从平滑与锐化的两种运算算子上也能看出,线性平滑都是基于对图像邻域的加权求和或积分运算,而锐化则是其逆运算导数(梯度)或有限差分来实现。
噪声和边缘都会使图像产生灰度跳变,需要将噪声和边缘区分。
在平滑处理中平滑的对象是噪声而不是边缘,在锐化处理中锐化的对象是边缘而不是噪声。
5.5.2.基于一阶导数的图像增强--梯度算子
1.robert交叉梯度
--需要两次滤波,然后求和
    i=imread('bacteria.BMP');       
    subplot(1,4,1);imshow(i); title('source') ;
    
    i=double(i);    
    w1=[-1,0;0,1];    %对正45度方向的边缘有较强响应,从图g1可以看出
    w2=[0,-1;1,0];    %对负45度方向的边缘有较强响应,从图g2可以看出
    g1=imfilter(i,w1,'corr','replicate');%正45度滤波 
    g2=imfilter(i,w2,'corr','replicate');%负45度滤波
    g=abs(g1)+abs(g2);    
    
    subplot(1,4,2);imshow(abs(g1),[]);title('g1') ;
    subplot(1,4,3);imshow(abs(g2),[]);title('g2');
    subplot(1,4,4);imshow(g,[]);title('g') ;


2.sobel梯度

5.5.3.基于2阶微分的图像增强--拉普拉斯算子。由于各向同性,所以只需一次滤波。
    I=imread('bacteria.BMP');         
    subplot(1,4,1);imshow(I); title('source') ;  
      
    I=double(I);      
    w1=[0 -1 0;-1 4 -1;0 -1 0];
    L1=imfilter(I,w1,'corr','replicate');
    subplot(1,4,2);imshow(abs(L1),[]); title('w1模板') ;  

    w2=[-1 -1 -1;-1 8 -1;-1 -1 -1];
    L2=imfilter(I,w2,'corr','replicate');
    subplot(1,4,3);imshow(abs(L2),[]); title('w2模板') ;  
    
    w3=[1 4 1;4 -20 4;1 4 1];%加权模板
    L3=imfilter(I,w3,'corr','replicate');
    subplot(1,4,4);imshow(abs(L3),[]); title('w3模板') ;

5.5.5高频提升滤波机器实现
无论是基于一阶微分的robert还是基于二阶微分的拉普拉斯的模板,其中各系数和均为0。这说明算子在灰度恒定的区域响应为0,即在锐化处理后的图像中,源图像的平滑区近乎于黑色,而原图中所有的边缘,细节,和灰度跳变点都在黑背景中显示出来。在基于锐化的图像增强中,我们常常希望在增强边缘和细节的同时,仍然保留原图像中的信息,而不是将平滑区域的灰度信息丢失。因此可以将源图像加上锐化后的图像以得到比较理想的图像。
p171

5.5.6高斯-拉普拉斯变换 LoG
    I=imread('lena.gif');   
    subplot(1,4,1);imshow(I); title('source') ;  
      
    I_double=double(I);   %滤波前转化为双精度   
    h_lap=[-1 -1 -1;-1 8 -1;-1 -1 -1];%拉普拉斯算子
    I_lap=imfilter(I_double,h_lap,'corr','replicate');%拉普拉斯锐化
    subplot(1,4,2);imshow(uint8(abs(I_lap)),[]); title('lap');
      
    h_log=fspecial('log',5,0.5);%log模板,sigma=0.5
    I_log=imfilter(I_double,h_log,'corr','replicate');%log滤波
    subplot(1,4,3);imshow(uint8(abs(I_lap)),[]); title('log 0.5') ;

    h_log=fspecial('log',5,2);%log模板,sigma=2
    I_log=imfilter(I_double,h_log,'corr','replicate');%log滤波
    subplot(1,4,4);imshow(uint8(abs(I_lap)),[]); title('log 2') ;


、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

2016-06-12 20:28:03 qq_17121501 阅读数 883

准备知识:空间域,频率域概念,傅里叶变换。Matlab与VC++
引言:图像增强技术可分成两大类,一类是空间域增强一类是频率域增强。 有些滤波更适合在空间域完成,有些是更适合 频率域完成。
空间域图像增强技术主要包括直方图修正,灰度变换增强,图像平滑化以及图像锐化等。多几种方法联合处理。

一、图像平滑

1.边界处理中,有增和减的两种方法,如复制像素,常数填充方法,及收缩处理方法。
2.Matlab中,滤波函数为imfilter()
原型 g=imfilter(f,w,option1,option2,…);
f是要进行 滤波的图像,w是滤波操作所使用的模板,为一个二维数组
选项内容如下
边界选项(针对边界处理问题),尺寸选项(指定输出图像的大小),模式选项(滤波相关还是卷积)
3. 二维滤波器函数fspecial();
其中有高斯模板gaussian,平均模板average,拉普拉斯模板laplacian等
matlab代码

I=imread(‘noise.bmp’);
figure,imshow(I);

h3_5 = fspecial(‘gaussian’,3,0.5);
I3_5 = imfilter(I,h3_5,’replicate’); % 重复边缘像素
figure,imshow(I3_5);

二、平均滤波

噪声的存在使得在噪声点处产生灰度跳跃,将每一个点用周围点的灰度值平均替代,从而达到减少噪声影响的过程就称为平滑或模糊。
一般 平均模板为
这里写图片描述
w提供 一种平均的加权模式
C++实现

imgInput.Template(&imgOutput,3,3,1,1,Template_Smooth_Avg,(float)1/9);//模板长宽,中心坐标
**三、高斯滤波**
----------
随着距离中心点的距离增大,权重迅速减小,从而可以确保中心点看起来更接近地与它距离更近的点,基于这 样的考虑得到的模板即为高斯模板。
常用的3*3高斯模板如下
![这里写图片描述](http://img.blog.csdn.net/20160612203843783)

这里写图片描述

//C++常用模板数组

// 平均平滑  1/9
float Template_Smooth_Avg[9]=
{1, 1, 1,
1, 1, 1,
1, 1, 1};
// Gauss平滑  1/16
float Template_Smooth_Gauss[9]=
{1, 2, 1,
2, 4, 2,
1, 2, 1};
// Sobel垂直边缘检测
float Template_HSobel[9]=
{-1, 0, 1, 
-2, 0, 2, 
-1 ,0 , 1};

// Sobel水平边缘检测
float Template_VSobel[9]=
{-1, -2, -1,
0, 0, 0, 
1, 2, 1};

// LOG边缘检测
float Template_Log[25]=
{0, 0, -1, 0, 0,
0, -1, -2, -1, 0,
-1, -2, 16, -2, -1,
0, -1, -2, -1, 0,
0, 0, -1, 0, 0};
//Sigma = 2,较平滑
double Template_Log1[25]={0.0448,    0.0468,    0.0564,    0.0468,    0.0448,
    0.0468,    0.3167,    0.7146,    0.3167,    0.0468,
    0.0564,    0.7146,   -4.9048,    0.7146,    0.0564,
    0.0468,    0.3167,    0.7146,    0.3167,    0.0468,
    0.0448,    0.0468,    0.0564,    0.0468,    0.0448
};

// Laplacian边缘检测
float Template_Laplacian1[9] = {0, -1, 0,
-1, 4, -1,
0, -1, 0
};
float Template_Laplacian2[9] = {-1, -1, -1,
-1, 8, -1,
-1, -1, -1
};
2017-01-02 13:38:22 MATLAB_matlab 阅读数 4354

更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013

简单地说,图像的空间域变换操作就是为了达到某种视觉效果,变换输入图像的像素位置,通过把输入图像的像素位置映射到一个新的位置以达到改变原图像显示效果的目的。其实,也就是变换图像的坐标系统。图像的空间域变换操作包括以下几个方面:

更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013


• 图像插值(Interpolation)
• 图像缩放(Resizing)
• 图像旋转(Rotation)
• 图像剪切(Cropping)

在处理图像的过程中,有时需要对图像的大小和几何关系进行调整,比如对图像进行缩放及旋转,这时图像中每个像素的值都要发生变化。数字图像的坐标是整数,经过这些变换
之后的坐标不一定是整数,因此要对变换之后的整数坐标位置的像素值进行估计。


1. 图像插值

          图像空间域变换操作可以认为是在输入图像和输出图像之间进行像素—像素变换,然而由于我们处理的是数字图像,其重要特点就是图像的横纵坐标值是离散的,这就使得执行空间域变换操作(如缩放、旋转等)后的输出图像中存在像素点无法找到其在输入图像中的对应点,而输入图像的像素点经过空间域变换后也可能落在输出图像中的无效位置上,因而输出图像中将会出现空白点,图像失去可视性。

        为了弥补这一显示缺陷,需要引入图像插值操作,估计像素点之间位置的像素值,将输入图像和输出图像的像素—像素变换在数字图像的约束下完善起来,有效地填充图像中可能出现的空白点。在下一节将要介绍的图像缩放和图像旋转操作都将涉及到图像插值运算。

        插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实曲线,用这个重建的函数便可求出任意位置的函数值。

        设已知函数值为 f (u 1 , v 1 )、f (u 2 , v 2 )⋯⋯f (u n , v n ),则未知点(u 0 , v 0 )的函数值通过插值可以表示为

 


其中,h()为插值核函数,f()为权系数

            插值算法的数值精度及计算量与插值核函数有关,插值核函数的设计是插值算法的核心。MATLAB 图像处理工具箱提供了 3 种插值方法:最近邻插值(Nearest Neighbor Interpolation)、双线性插值(Bilinear Interpolation)和双三次插值(Bicubic Interpolation)。
            使用插值操作的空间域变换操作,如图像缩放、图像旋转及其他一些一般性变换(仿射变换、投影变换或用户自定义变换),一般需要在其相应操作中指明所使用的插值方法作为函数参数。如未指定,则系统默认执行最近邻插值方式。另外,针对插值操作,还需要注意以下两个方面:

         (1)对于 RGB 图像而言,插值操作将对其 R、G、B 3 个分量分别进行。

          (2)对于二值图像,在进行双线性插值或双三次插值时,计算得到的像素值可能不再是只有 0 和 1 两个值,结果依赖于输入图像数据的存储类型。如果输入图像的存储类型是 double类型,则输出图像将会包括 0 和 1 以外的值;而对于 uint8 类型的输入图像,由于在插值过程中进行了四舍五入的操作,得到的输出图像仍为 uint8 类型的二值图像。但是,当采用最近邻插值时,无论输入图像数据是何种存储类型,得到的始终都是二值图像。

       下面简单介绍 3 种插值方法。

          1.最近邻插值

      最近邻插值是最简单的插值算法,在这种算法中,输出图像中每一个像素点的值就是与该点在输入图像中变换位置最临近采样点的值。该算法的数学表示为:

            

        最近邻插值方法的运算量非常小,是图像空间域变换操作函数默认使用的插值方法。对于索引色图像来讲,它是唯一可用的插值方法。不过,最近邻插值法的核函数频域特性不是很好,从它的傅立叶频谱上可以看出,它与理想低通滤波器的性质相差较大。当用这种方法实现大倍数放大处理时,在图像中会明显看出块状效应。

          2、双线性插值

           双线性插值法的输出像素值是它在输入图像中 2×2 邻域采样点的平均值,它根据某输出像素点在输入图像变换位置周围 4 个像素的灰度值在水平和垂直两个方向上对其插值,如图所示

         设(u0,v0)是要插值点的坐标,则双线性插值的方法为:

         第一步:从f(uk,vk)及f(uk+1,vk)求f(u0,vk);

         第二步:从f(uk,vk+1)及f(uk+1,vk+1)求f(u0,vk+1)。

     把按照上式计算出来的值赋予图像的几何变换对应于(u0,v0)处的像素,即可实现双线性插值。

    


    3、双三次插值

     双三次插值的插值核为二次函数,其插值邻域的大小为 4×4。它的插值效果相比前两种方法要好,但相应的计算量也较大。为了计算(u0 ,v0 )  点的像素值,采用双三次插值法的示意图如

第一步,在四条水平直线上分别用三次多项式插值计算点 a、b、c、d 处的灰度值;
第二步,对 a、b、c、d4 点在垂直方向上再做 3 次多项式内插,得到(u0 ,v0 ) 点的像素值。




2. 图像缩放

     MATLAB 图像处理工具箱中的函数 imresize 可以对图像进行缩放操作,同时指定以上所介绍的插值方法作为其函数参数,如不指定,则默认为是最近邻插值法。

    imresize 函数的语法格式为:
    B = imresize(A, m)
    B = imresize(A,m, method)
    B = imresize(A,[mrows ncols], method)
    B = imresize(⋯,method, n)
    B = imresize(⋯,method, h)

  这些语句的功能就是按照指定的放大倍数和插值方法等参数将图像A缩放成图像B。其中,参数 m 表示放大倍数,m>1 表示图像放大,m<1 表示图像缩小;参数 method 表示选用的插值方法,其可选值为 nearest(最近邻插值)、bilinear(双线性插值)和 bicubic(双三次插值)。

  B=imresize(A,[mrows ncols], method)语句通过[mrows ncols]指定了输出图像的大小为mrows×ncols,从而达到了对原图像 A 进行指定大小缩放的目的。

  B=imresize(⋯,method, n)语句在 imresize 函数中引入了一个表征滤波器大小的整数作为参数。在使用双线性插值和双三次插值法缩小图像时,为消除引入的高频成分,imresize 在插值之前使用一个低通滤波器来减弱混叠现象,n 就是这个低通滤波器的大小,表示 n×n 的窗口,默认值为 11×11。如果 n 取值为 0,则表示忽略滤波步骤。  

  B=imresize(⋯,method, h)语句允许用户自行指定滤波器,其中 h 表示一个二维 FIR 滤波器,例如由函数 ftrans2、fwind1、fwind2 或 fsamp2 生成的滤波器结构。


例:

A=imread('C:\Users\Administrator\Desktop\picture\MATLAB图像处理\part4\1.png');
X1=imresize(A,2);
X2=imresize(A,2,'bilinear');
X3=imresize(A,2,'bicubic');
figure,imshow(A),title('原始图像');
>> figure,imshow(X1),title('最近邻插值法');
>> figure,imshow(X2),title('双线性插值法');
>> figure,imshow(X3),title('双三线性插值法');

        从以上 3 种插值方法对图像放大的结果可以看出,采用最近邻插值法的放大图像中明显可以看出块状效应,但对于质量要求不高的情况下,效果还是还可以接受的,双线性插值法和双三次插值法的结果则没有块状效应,但双线性插值法有些模糊,双三次插值法效果最好。

 

 3.图像旋转

         在对数字图像进行旋转的时候,各像素的坐标将会发生变化,使得旋转之后不能正好落在整数坐标处,需要进行插值。在工具箱中的函数 imrotate 可用上述 3 种方法对图像进行插值旋转,默认的插值方法也是最近邻插值法。

      imrotate 的语法格式为:
      B = imrotate(A, angle)
      B = imrotate(A, angle, method)
      B = imrotate(A, angle, method, bbox)

       函数 imrotate 对图像 A 进行旋转得到图像 B,参数 angle 用于指定图像按逆时针方向旋转的角度,参数 method 用于指定插值的方法,可选的值为 nearest(最近邻插值)、bilinear(双线形插值)及 bicubic(双三次插值),默认值为 nearest。一般来说,旋转后的图像会比原图大,超出原图像的部分值为 0。用户也可以指定 crop 参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。

例:

A=imread('C:\Users\Administrator\Desktop\picture\MATLAB图像处理\part4\1.png');
J=imrotate(A,45,'bilinear');
figure;
imshow(A),title('原图')
figure
imshow(J),title('旋转之后的图');




4.图像剪切

         当只需要处理图像中的一部分时,或者需要将某一部分取出,这样就要对图像进行剪切。图像处理工具箱提供函数 imcrop 用于剪切图像中的一个矩形子图,用户可以通过参数指定这个矩形顶点的坐标,也可以用鼠标指针选取这个矩形。

         imcrop 函数的语法格式为:
       I2 = imcrop(I)
       X2 = imcrop(X,map)
       RGB2 = imcrop(RGB)
       I2 = imcrop(I,rect)
       X2 = imcrop(X,map,rect)
       RGB2 = imcrop(RGB,rect)
       [⋯] = imcrop(x,y,⋯)
       [A,rect] = imcrop(⋯)
       [x,y,A,rect] = imcrop(⋯)

       其中 I2=imcrop(I)、X2=imcrop(X, map)和 RGB2=imcrop(RGB)为交互式地对灰度图像、索 引 色 图 像 和 真 彩 色 图 像 进 行 剪 切 。 I2=imcrop(I,rect),X2=imcrop(X,rnap,rect) 和RGB2=imcrop(RGB,rect)按指定的矩形框 rect 剪切图像,rect 是一个四元向量[xmin ymin widthheight],分别表示矩形的左上角的坐标、宽度和高度。[⋯] = imcrop(x,y,⋯)在指定坐标系(x,y)中剪切图像。[A,rect]=imcrop(⋯)和[x,y,A,rect]=imcrop(⋯)在用户手动选取剪切图像的同时返回剪切框的参数 rect。

例:

 A=imread('C:\Users\Administrator\Desktop\picture\MATLAB图像处理\part4\1.png');
 I=imcrop(A,[30 40 100 150]);
 figure,imshow(A),title('原图');
 figure,imshow(I),title('裁剪后的图');


例:交互式裁剪

>> A=imread('C:\Users\Administrator\Desktop\picture\MATLAB图像处理\part4\1.png');
I=imcrop(A);%交互式裁剪
>> figure,imshow(A),title('原图');
>> figure,imshow(I),title('交互式裁剪');


更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013


没有更多推荐了,返回首页