matlab图像的邻域操作与块操作

1.图像的滑动邻域操作。

    邻域操作是指将每个输入的像素值以及其某个邻域的像素值结合处理而得到对应的输出像素值的过程。邻域通常形状规则。如2*2,2*3之类。

滑动邻域操作一次处理一个像素。

   对于m*n的邻域,中心像素坐标为:floor(([m,n]+1)/2);

  例如:邻域2*2——>[1 1]

        邻域2*3——>[1 2]

  实现滑动邻域操作的步骤:

    (1) 选择一个单独的像素。

    (2) 确定该像素的滑动邻域。

    (3) 对邻域中的像素值应用一个函数求值,该函数将返回标量计算结果。

    (4) 将计算结果作为输出图像中对应的像素的值。

    (5) 对输入图像的每个像素都重复以上步骤。

 

 滑动邻域操作函数:

  ①

    Y=nfilter(X,’index’,[m,n],fun,P1,P2....);   %对图像X以邻域[m,n]进行fun函数操作。

   其中,index为可选参数。若指定,则意为将图像作为索引图像处理。

  例如:

    对图像I的每个3*3邻域进行标准方差的运算 :I2= nfilter(I,[3,3],’std2’);

  或者:

    B=nfilter(A,[3,3],@myfun);  %计算函数是自定义的,在myfun.m文件中。

  ②

    Y=colfilt(X,[m,n],blocktype,fun);

   其中,blocktype表示块的移动方式,有两个取值:distinct(分离块)、sliding(滑动块)。

  与nfilter相同,fun函数也可以是自定义的,

  例如:

    func=inline(‘min(x)’);

    J=colfilt(I,[6,6],’sliding’,func);

  2.图像的块操作。

   对应分离块进行操作的函数:

     Y=blkproc(X,[m,n],[mborder,nborder],fun,P1,P2...);  

     其中,[mborder,nborder]指定了图像的扩展边界,即扩展后图像大小为[m+2mborder,n+2nborder]。

   例如:

       B=blkproc(A,[4,6],[2,3],fun,...);  %分离块大小为4*6,行边界为2,列边界为4,因此fun函数操作的图像大小实际为8*12。

    同样的,fun也可以使用一个内联对象,例:

                      I=imread(‘alumgrns.tif’);

                      fun=inline(‘std2(s)*ones(size(x))’);

                      I2=blkproc(I,[8,8],'std2(x)*ones(size(x))');  注:此处,不再是fun。

                      Imshow(I);

                      Figure,imshow(I2,[]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值