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 ...
随机推荐
- 【BZOJ5020】[LOJ2289]【THUWC2017】在美妙的数学王国中畅游 - LCT+泰勒展开
咕咕咕?咕咕咕! 题意: Description 数字和数学规律主宰着这个世界. 机器的运转, 生命的消长, 宇宙的进程, 这些神秘而又美妙的过程无不可以用数学的语言展现出来. 这印证了一句古老的名言 ...
- [NOIPlus]斗地主
毫无意义的一道题. 用pai[i]表示某种点数的牌的剩余量,used[i]表示单,对,三,四的出牌数,大力分类讨论,大力dfs即可...真奇葩... #include <iostream> ...
- nginx1.15.8源码安装
useradd www -s /sbin/nologin -M yum -y install gcc pcre-devel openssl-devel cd /usr/local/src wget ...
- TI低功耗蓝牙(BLE)介绍
TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer’s Guide (Rev. B),部分图片直接引用 ...
- webpack不打包指定的js文件
背景: 在项目实际开发中,有一些IP地址需要随时修改,进行部署,例如websocket的地址.因此在项目打包的时候,不希望保持IP地址的文件被打包,因此就需要把需要修改的常量独立出来,存放在一个js文 ...
- python 多列表对应的位置的值形成一个新的列表
list1 = [1, 2, 3, 4, 5] list2 = ['a','b', 'c', 'd', 'e'] list3 = [1, 2, 3, 4, 5] multi_list = map(li ...
- cogs 2170. 大整数取模
2170. 大整数取模 ★ 输入文件:bigint.in 输出文件:bigint.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 输入正整数n和m,输出n mo ...
- 使用BabeLua在cocos2d-x中编辑和调试Lua
使用BabeLua在cocos2d-x中编辑和调试Lua BabeLua是一款基于VS2012/2013的Lua集成开发环境,具有Lua语法高亮,语法检查.自己主动补全.高速搜索,注入宿主程序内对Lu ...
- iOS开发之十万个为什么<1>
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- mydumper安装及安装故障汇总
mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式术语逻辑备份.它支持多线程.备份速度远高于原生态的mysqldump以及众多优异特性. 因此该工具是DBA们的不二选 ...