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 ...
随机推荐
- [HDU1052]Tian Ji -- The Horse Racing(田忌赛马)
题目大意:田忌赛马问题,给出田忌和齐威王的马的数量$n$和每匹马的速度$v$,求田忌最多赢齐威王多少钱(赢一局得200,输一局扣200,平局不得不扣). 思路:贪心. 1.若田忌最慢的马可以战胜齐王最 ...
- Linux150个命令
命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...
- CRM系统 - 总结 (一) 权限
1. 问:为什么程序需要权限控制? 答:生活中的权限限制,① 看灾难片电影<2012>中富人和权贵有权登上诺亚方舟,穷苦老百姓只有等着灾难的来临:② 屌丝们,有没有想过为什么那些长得漂亮身 ...
- OO第二单元总结——电梯调度问题
一.设计策略. 在三次作业中,多线程程序的实现分以下几个步骤: 1. 主线程Main类的创建多个线程. 2. 共享对象的synchronized锁保证线程之间的互斥访问. 3. 采用notifyAll ...
- 【codeforces 235B】Let's Play Osu!
[题目链接]:http://codeforces.com/problemset/problem/235/B [题意] 让你玩一个游戏,游戏结果由一个长度为n的01字符组成; 这个结果的分数与连续的1的 ...
- 【codeforces 757E】Bash Plays with Functions
[题目链接]:http://codeforces.com/problemset/problem/757/E [题意] 给你q个询问; 每个询问包含r和n; 让你输出f[r][n]; 这里f[0][n] ...
- C#-WebService基础02
WebService WSDL是web service的交换格式 跨平台数据交互 什么是web服务 SOA 面向服务的体系结构 service-Oriented Architecture Servi ...
- Spring Cloud Feign 出现ClassNotFoundException: feign.Feign$Builder错误
Spring Cloud Feign 出现ClassNotFoundException: feign.Feign$Builder错误 后来发现是POM文件写错了,修改为正确的pom,就可以了: POM ...
- Linux下永久改动MAC地址和ifconfig命令总结
1. 固定一个MAC地址,特别是在使用多个虚拟机的时候 linux环境下: 用root身份登录,在/etc/rc.d/rc.local里加上这三句 ifconfig eth0 down ifconfi ...
- cximage功能简介
CxImage是一个可以用于MFC 的C++图像处理类库类,它可以打开,保存,显示,转换各种常见格式的图像文件,比如BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, ...