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邻域块球平均值输出对应像素值。

  • 相关阅读:
    父子组件的数据传递
    前端处理:elementUI 表格索引代表第几条数据
    qt的moc,uic,rcc命令的使用
    支持无限精度无限大数的类BigNumber实现
    二进制的妙用
    C#实现任意大数的计算和简单逻辑命题的证明——前言
    打磨程序员的专属利器——文本
    打磨程序员的专属利器——快捷键
    打磨程序员的专属利器——命令行&界面
    Linux命令全集
  • 原文地址:https://www.cnblogs.com/byteHuang/p/6783496.html
Copyright © 2011-2022 走看看