Matlab 图像的邻域和块操作
图像的邻域操作是指输出图像的像素点取值,由输入图像的某个像素点及其邻域内的像素,通常像素点的邻域是一个远小于图像本身尺寸、形状规则的像素块,如2×2,3×3正方形、2×3矩形等,或者近似圆形的多边形。在Matlab中,提供了几个实现邻域操作的函数:
通用滑块邻域操作函数:
nlfilter(),语法包括:B = nlfilter(A, [m n], fun):输入灰度图像A,返回图像B,按照尺寸m×n滑动邻域,利用运算函数fun处理后得到结果。其中fun是一个传入m×n矩阵输出一个标量的函数,可以是mean,mean2,std,std2,min,max等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 × N或 M× 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是个字符串,可以取distinct或sliding,取distinct按照分离邻域的方式B = colfilt(A, [m n], [mblock nblock], block_type, fun)B = colfilt(A, 'indexed', ...)
Matlab 图像的邻域和块操作的更多相关文章
- OpenCV2邻域和模板操作
在图像处理中,通过当前位置的邻域像素计算新的像素值是很常见的操作.当邻域包含图像的上几行和下几行时,就需要同时扫描图像的若干行,这就是图像的邻域操作了.至于模板操作是实现空间滤波的基础,通常是使用一个 ...
- matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明
转自:http://blog.csdn.net/fx677588/article/details/53301740 1. matlab图像保存说明 matlab中读取图片后保存的数据是uint8类型( ...
- 使用matlab进行图像处理的一些常用操作和tip
本人还是习惯使用Python语言,有时候不得不使用matlab的时候就变得举步维艰,下面记录一下使用matlab进行图像处理的一些常用操作以及代码,方便之后查阅: 1. 图像的读取 %% 读取原图像 ...
- Matlab图像彩色转灰色
Matlab图像彩色转灰色 时间:2014年5月7日星期三 网上找的程序.实现图像彩色转灰色: I1=imread('C:\Users\Yano\Desktop\matlab\test1\4.jpg' ...
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...
- Matlab、R向量与矩阵操作 z
已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作 描 述 Matla ...
- Eigen 学习之块操作
Eigen 为 Matrix .Array 和 Vector提供了块操作方法.块区域可以被用作 左值 和 右值.在Eigen中最常用的块操作函数是 .block() . block() 方法的定义如 ...
- VIM块操作
一.可视模式 按v启用可视模式,之后移动光标可以选择. 如: 如果想整行操作,则用大写的V,再移动光标可以按行为单位进行选择. 二.列块操作 在 word中有一个功能,按alt加鼠标拖动,可以 ...
- Opencv中图像的遍历与像素操作
Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0 ...
随机推荐
- [luogu2607 ZJOI2008] 骑士 (树形dp)
题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...
- KVM虚拟机相关步骤
KVM是Kernel-based Virtual Machine的简称,是一个开源的虚拟化模块,该文档是基于CentOS 7.4环境操作的 一.操作系统安装 本文采用的是CentOS 7.4 1.查看 ...
- vue如何根据返回的值对元素进行样式渲染
1.最终显示样式: 需要:根据任务状态值,显示不同颜色的原点表示任务状态,以及对优先级的数据,进行☆标记 2.代码实现: 在<el-table-column>中需要显示的内容前面,添加图标 ...
- WinServer-IIS-woff字体不显示问题
ASP.NET mvc发布到IIS之后,访问网站的时候,发现woff字体没有加载 百度发现很多博客上的教程是这样的,在IIS管理器中的MIME选项中添加类型 但是重新使用IIS发布后,新添加的字体就会 ...
- spark源代码action系列-foreach与foreachPartition
RDD.foreachPartition/foreach的操作 在这个action的操作中: 这两个action主要用于对每一个partition中的iterator时行迭代的处理.通过用户传入的fu ...
- Android自己定义组件系列【4】——自己定义ViewGroup实现双側滑动
在上一篇文章<Android自己定义组件系列[3]--自己定义ViewGroup实现側滑>中实现了仿Facebook和人人网的側滑效果,这一篇我们将接着上一篇来实现双面滑动的效果. 1.布 ...
- 怎样用批处理来执行多个exe文件
怎样用批处理来运行多个exe文件 @echo off start *****.exe start *****.exe start *****.exe start *****.exe 接着我们就能够运行 ...
- myeclipse配置内存
1.javaee项目假设耗费的内存过大,须要配置内存大小: 下图是配置tomcat结果:Optional program arguments: -Xms512M -Xmx512M -XX:PermSi ...
- Java路径问题终于解决方式—可定位全部资源的相对路径寻址
1.在Java项目中,应该通过绝对路径訪问文件.下面为訪问的经常用法: 第一种方法:类名.class.getResource("/").getPath()+文件名称 另外一种方法: ...
- Educational Codeforces Round 6 B. Grandfather Dovlet’s calculator 暴力
B. Grandfather Dovlet’s calculator Once Max found an electronic calculator from his grandfather Do ...