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 ...
随机推荐
- HDU 5533 Dancing Stars on Me( 有趣的计算几何 )
链接:传送门 题意:给出 n 个点,判断能不能构成一个正 n 边形,这 n 个点坐标是整数 思路:这道题关键就在与这 n 个点坐标是正整数!!!可以简单的分析,如果 n != 4,那一定就不能构成正 ...
- 51nod-字符串连接
输入n个字符串s[i],你要把他们按某个顺序连接起来,使得字典序最小. (1 <= n <= 100) (每个字符串长度 <= 100) (字符串只包含小写字母) Input 第一行 ...
- AMD包下载及使用
AMD下载 下载地址 选择837.zip下载即可,将837.zib考入相应的文件夹下,并解压缩 wget http://netlib.org/toms/837.zip unzip 837.zip cd ...
- ES6之用let,const和用var来声明变量的区别
var(掌握) 不区分变量和常量 用var声明的变量都是变量,都是可变的,我们可以随便对它进行运算操作.这样当多个人进行同一个项目时,区分变量和常量会越来越难,一不小心就会把设计为常量的数据更改了 ...
- Codecademy网站安利 及 javaScript学习
今天发现一个Code教学网站,号称可以利用零碎时间来学习些代码. codecademy (https://www.codecademy.com)
- shell 脚本 helloworld
一.Hello World 脚本代码 #!/bin/sh echo "hello world" /bin/pwd 二.分析脚本 第 1 行:shell 脚本的固定写法 第 2 行: ...
- ASP.NET-常用正则表达式
常用正则表达式 正则: [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}", ErrorMes ...
- HDU——T 2119 Matrix
http://acm.hdu.edu.cn/showproblem.php?pid=2119 Time Limit: 5000/1000 MS (Java/Others) Memory Limi ...
- crm操作报价单实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft ...
- HDU 5353 Average
Problem Description There are n soda sitting around a round table. soda are numbered from 1 to n and ...