图像的邻域操作是指输出图像的像素点取值,由输入图像的某个像素点及其邻域内的像素,通常像素点的邻域是一个远小于图像本身尺寸、形状规则的像素块,如2×2,3×3正方形、2×3矩形等,或者近似圆形的多边形。在Matlab中,提供了几个实现邻域操作的函数:

  • 通用滑块邻域操作函数:nlfilter(),语法包括:

    • B = nlfilter(A, [m n], fun):输入灰度图像A,返回图像B,按照尺寸m× n滑动邻域,利用运算函数fun处理后得到结果。其中fun是一个传入m × n矩阵输出一个标量的函数,可以是meanmean2stdstd2minmax等Matlab自带的函数,或者使用inline自定义的函数。

    • B = nlfilter(A, 'indexed', ...):该函数中返回图像B,它是输入的索引图像A填充后的结果。如图像A的数据类型是浮点型,则用”1”填充;如果是逻辑型或者无符号整型,则用 “0”填充。

以lena图为例:


lena.jpg


clc; clear all; close all;A = imread('lena.jpg');
A1 = im2double(A);
B1 = nlfilter(A1, [4 4], 'std2');
fun = @(x) max(x(:));
B2 = nlfilter(A1, [3 3], fun);
B3 = nlfilter(A1, [6 6], fun);
figure(1);
subplot(1, 3, 1), imshow(B1);
subplot(1, 3, 2), imshow(B2);
subplot(1, 3, 3), imshow(B3);


  • 分离邻域操作函数:blockproc(),语法包括:

    • B = blockproc(A, [m n], fun):该函数中对输入图像A,采用尺寸m×n分离块,利用运算函数fun处理,处理后的结果为输出图像B
    • B = blockproc(src_filename, [m n], fun):与上面函数的语法相似,但是同时读取和处理名为src_filename的图像,处理时将图像的一个分块读入内存,这个调用方式对于大图像非常有效,如果输出矩阵B过大,则可以使用参数Destination,将处理结果直接写入该文件中。
    • B = blockproc(adapter, [M N], fun):用于处理用户自己定义的图像格式,adapter是读写图像的接口函数。
    • blockproc(..., Name, Value, ...):该函数中按照Name-Value的方式对于像进行分离块处理,Name-Value取值可以查找Matlab的help文档。

其中关于块的一些定义如下:

变量 含义
block_struct.border 是一个两元素向量[V H],说明矩阵的垂直和水平结构
block_struct.blockSize 是一个两元向量[rows cols]说明块的尺寸
block_struct.data 是一个M × NM× N ×P的矩阵
block_struct.imageSize 是一个两元向量[row col]说明输入图像的尺寸
block_struct.location 是一个两元向量[row col]说明输入图像的块数据中第一像素的位置

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


peppers.png(图左),grb_peppers.tif(图右)


  • 列方向邻域操作函数:colfilt(),语法包括:

    • B = colfilt(A, [m n], block_type, fun):该函数中将输入图像A,按照尺寸m×n块重新组合成一个临时矩阵,利用fun函数对这个临时矩阵处理,如果需要填充,则使用“0”填充。其中block_type是个字符串,可以取distinctsliding,取distinct按照分离邻域的方式
    • B = colfilt(A, [m n], [mblock nblock], block_type, fun)
    • B = colfilt(A, 'indexed', ...)

转载于:https://www.cnblogs.com/hehehaha/p/6332218.html

Matlab 图像的邻域和块操作相关推荐

  1. matlab对像素邻域操作,matlab图像的邻域操作与块操作

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

  2. matlab 图像上下翻,Matlab图像九宫格基本操作(翻转,镜像等)+位图操作

    Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 这次blog提到的操作对于matlab来说都很基础,而且对于有编程和计算机基础的人来 ...

  3. matlab 图像操作函数的详解

    转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...

  4. matlab图像取反_matlab对图像操作函数的详解

    一. 读写图像文件 1. imread imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif') 注:计算机E盘上要有w01相应的.tif文件. 2. imwrite i ...

  5. matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21

    数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...

  6. matlab图像区域填充的原理_MATLAB图像分析

    关注我,交流学习...... 摘要 MATLAB的影像处理工具箱支持多种标准的图像处理操作,以方便用户对图像进行分析和调整.这些图像处理操作主要包括: ①获取像素值及其统计数据: ②分析图像,抽取其主 ...

  7. OpenCV之imgproc 模块. 图像处理(1)图像平滑处理 腐蚀与膨胀(Eroding and Dilating) 更多形态学变换 图像金字塔 基本的阈值操作

    图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 No ...

  8. matlab 图像的膨胀indilate和腐蚀imerode

    1.图像膨胀的Matlab实现: 可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象.结构元素对象可以是strel函数返回的对象,也可 ...

  9. matlab平面图形的几何变换,matlab图像的几何变换

    2. 了解平移.伸缩.对称.旋转等变换. 3. 学习掌握 MATLAB 软件有 实验报告 课程名称:数学实验 实验名称:平面图形的几何变换 指导教师: 实验目的.要求: 1. ...... Matla ...

最新文章

  1. 你连原理都还没弄明白?机甲风暴java破解版下载
  2. 阿里25k招.NET,要求WPF!
  3. C++11 Primer Plus(三)之名称空间与类
  4. 搜索最好的Android 代码
  5. Tomcat的下载及安装
  6. 读取金税盘、税控盘或税务Ukey基本信息
  7. php无法找到该页,UCHOME出现问题(转帖)
  8. DS1302 的 BURST 模式
  9. atomic的实现原理
  10. 分布式专题(1)- 计算机网络
  11. EntityFramework 用Moles的mock
  12. Win10如何禁止自动更新?Win10禁止更新又恢复怎么办?
  13. 工信部:未来三年我国处于5G发展导入期,要适度超前建设
  14. 搜索计算机硬盘的索引恢复,[转载]Chkdsk—磁盘查错修复命令
  15. java string.concat_Java String concat() 使用方法及示例
  16. 视频图像去模糊常用处理方法
  17. 自适应流媒体传输(五)——正确认识码率切换
  18. 程灵素:我走过山的时候山不说话
  19. python和cc哪个适合做游戏的背景音乐_(转)CocosCreator零基础制作游戏《极限跳跃》九、为游戏添加声音音效功能...
  20. 集成学习——Boosting之Ada-boost

热门文章

  1. Boost:显示如何将累加器持久化到文件中
  2. OpenCV如何启用Halide后端以提高效率
  3. Qt Creator在多个平台上运行
  4. QT的QDBusArgument类的使用
  5. QT的QAudioInput类的使用
  6. ios oc数组转换为c语言数组,iOS中将数组作为参数传递给服务器
  7. 计算机科学计算第二版期末,计算机专业学生期末考试试卷2.pdf
  8. php输入的值不得小于,PHP代码不允许多个输入值通过我的表单发送
  9. 11_CollapsingMergeTree,(State行和Cancel行匹配示例),聚合查询,Cancel状态行取反的聚合查询
  10. Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例