zoukankan      html  css  js  c++  java
  • matlab的一些关于块分类的函数~~~

    1. nlfilter(General sliding-neighborhood operations)

    B = nlfilter(A, [m n], fun),这是一个其中A是图像[m  n]是图像处理区域的矩阵大小,fun是函数句柄,B是函数返回的一个标量。

    意为对图像A的每个大小为m*n的patch进行fun函数的操作,patch的取法为滑动(sliding),即patch的中心像素遍历图像的每个点,当取到边界时需要进行边界延拓。fun必须是函数的句柄,可自由定义也可取matlab内置的函数。

    例:这个例子是应用中值滤波对图像进行3*3的邻域滑块操作

    A = imread('cameraman.tif');
    A = im2double(A);
    fun = @(x) median(x(:));
    B = nlfilter(A,[3 3],fun);
    imshow(A), figure, imshow(B)

    2.blockproc

    不重叠的块运算命令(distinct block processing),调用格式:B = blockproc(A,[M N],fun);

    意为对图像A的每个不重叠的大小为m*n的块进行fun函数的操作,级联的结果为B。

    fun = @(block_struct) ...
    std2(block_struct.data) * ones(size(block_struct.data));
    I2 = blockproc('moon.tif',[12 12],fun);
    figure;
    imshow('moon.tif');
    figure;
    imshow(I2,[]);

    I = imread('peppers.png');
    fun = @(block_struct) block_struct.data(:,:,[2 1 3]);
    blockproc(I,[200 200],fun,'Destination','grb_peppers.tif');
    figure;
    imshow('peppers.png');
    figure;
    imshow('grb_peppers.tif');

    3. colfilter

    调用格式:B = colfilt(A,[m n],block_type,fun)

    意为将图像A重排成每列为m*n块拉成一列组成的临时矩阵,对该临时矩阵进行fun函数的操作

    I = imread('tire.tif');
    I2 = uint8(colfilt(I,[5 5],'sliding',@mean));
    figure
    subplot(1,2,1), imshow(I), title('Original Image')
    subplot(1,2,2), imshow(I2), title('Filtered Image')

    对输入的5*5邻域块球平均值输出对应像素值。

  • 相关阅读:
    谈论quick-cocos2d-x和cocos2d-x lua了解差异
    VirtualBox更改虚拟机磁盘VDI的大小
    HDU 1484 Basic wall maze (dfs + 记忆)
    CII-原子
    [Openstack] Expecting an auth URL via either --os-auth-url or env[OS_AUTH_URL]
    iOS安全攻防(三):使用Reveal分析他人app
    数据库索引的作用和长处缺点
    用EnableMenuItem不能使菜单变灰的原因
    Java设计模式-观察者模式
    IplImage 封装释放
  • 原文地址:https://www.cnblogs.com/byteHuang/p/6783496.html
Copyright © 2011-2022 走看看