Matlab图像处理入门
1. Matlab基础
1.1 数据格式
Matlab默认的数据格式为双精度浮点数的矩阵或数组,同时支持其它数据类型。Matlab将单变量看作1´1的数组。Matlab支持的数据类型如下:
索引值从1开始。字符串须用单引号括起来。有些matlab函数或操作符只能用于双精度浮点数。
1.2 基本运算
1.2.1 赋值,如 A = [1 2 3],A = [1,3,5],A = [1:3],A = [1:0.5:3],则A是个行向量,各元素值分别为:1 2 3 1 3 5 1 2 3 1 1.5 2 2.5 3;A = [1;2;3]是列向量。
B = [1 2 3;4 5 6]是个2´3的矩阵或数组。若再执行 B = A,则B变为与A相同的行向量。
B=A’得到A的转秩。
B = A(r1:r2,c1:c2) 将A的一个子块赋给B,该子块在A中的位置由行号r1,r2(r1<=r2) 及列号c1,c2(c1<=c2)决定;A(r1:r2,c1:c2) = B将B赋给A的一个子块,B的大小必须是(r2-r1+1)´(c2-c1+1);
A(r1:r2,c1:c2) = B(m1:m2,n1:n2) 将B的一个子块赋给A的一个子块,同样,两个子块的大小必须相等。
1.2.2 加+,减-,要求两个变量的行、列数相等。对于数组,乘除运算符为.*和./,称为点乘和点除,同样要求两个变量的行、列数相等,运算是将相同位置的两个元素相乘或相除。
1.2.3 for, while, switch, ¼
2. 常用的Matlab基本图像处理函数
详细内容请参考matlab帮助。
2.1 文件读写
l 读图像:imread
A = imread(filename,fmt);将图像像素值读出并赋给变量A。
[X,map] = imread(filename,fmt);X为图像数组,map是图像的调色板。
参数:filename是文件名,fmt是图像文件的格式。如果图像文件不在Matlab默认路径中(当前默认路径可用path函数查看),则filename必须是全路径名。fmt可以是 'bmp'(位图图像),'jpg' 或 'jpeg'(JPEG图像),'tif' 或 'tiff'(TIFF图像)等多种常用格式。如果文件名filename中含有表示图像格式的后缀名,如 'test.tif',则参数fmt可以省略。
l 图像存盘:imwrite
imwrite(A,filename,fmt);用于真彩色图像存盘。
imwrite(X,map,filename,fmt) ;用于伪彩色图像存盘。
2.2显示
imshow(X),按图形窗口默认的调色板显示图像。
imshow(X,map),按map规定的调色板显示图像。
图像数组X可以是整数或浮点数。若X是整数,则其取值范围应为0~255,0表示最暗,255表示最亮;若X是浮点数,则其取值范围应为0~1,0表示最暗,1表示最亮。若X是浮点数,可通过uint8(X)强制转换成单字节整数。
函数min()和max()用来求向量或矩阵的最小、最大值。对向量V,min(V)返回其最小值;对于矩阵X,min(X(:))返回其最小值。
plot 画曲线。
2.3 几何运算
l 改变图像尺寸:imresize
B = imresize(A,m,method);将图像A的行、列数变为原来的m倍,结果图像由B输出。method是采用的插值方法,'nearest' (缺省) 采用最临近插值(零阶插值),'bilinear' 采用双线性插值,'bicubic' 采用双立方插值。如果省略参数method,则采用最临近插值进行变换。
l 图像旋转:imrotate
B = imrotate(A,angle,method);将图像按逆时针方向旋转angle度,结果图像由B输出。顺时针旋转时angle为负。
B = imrotate(A,angle,method,'crop');输出图像B四边被裁减,使其大小与A相同。
参数method同上。
2.4 统计运算
l 直方图:imhist
imhist(I);画图像I的直方图。
l 图像均值:b = mean2(A);计算图像A的像素平均值,即平均亮度。
l 图像方差:b = std2(A);计算图像A的方差。
2.5 图像增强
l 灰度调整:imadjust
J = imadjust(I,[low_in high_in],[low_out high_out],gamma);
将图像灰度由[low_in high_in]调整到[low_out high_out],gamma是调整的线性度,缺省为1,即线性调整。原图像I必须是double型,最大灰度区间为[0 1],可以用函数im2double()将图像转为这种格式。可以用im2uint8()将结果J转为8位灰度图像。
l 直方图均衡:J = histeq(I);采用直方图均衡对图像I进行增强。
imnoise
2.6 边缘提取
edge:实现6种不同的边缘提取方法:
Ø BW = edge(I,'sobel'); BW = edge(I,'sobel',TH); BW = EDGE(I,'sobel',TH,DIR);
采用Sobel算子增强后进行边缘提取。TH是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。DIR给定边缘提取的方向,可以是'horizontal'、'vertical' edges、或 'both' (the default)。
Ø BW = EDGE(I,'prewitt'); BW = EDGE(I,'prewitt',TH);BW = EDGE(I,'prewitt',TH,DIR)
采用Prewitt算子增强后进行边缘提取。TH是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。DIR给定边缘提取的方向,可以是'horizontal'、'vertical' edges、或 'both' (the default)。
Ø BW = EDGE(I,'roberts') ; BW = EDGE(I,'roberts',THRESH)
采用Rroberts算子增强后进行边缘提取。THRESH是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。
Ø BW = EDGE(I,'log');BW = EDGE(I,'log',THRESH);BW = EDGE(I,'log',THRESH,SIGMA);
采用Marr算子进行边缘提取。THRESH是提取边缘的阈值,SIGMA是标准差,缺省值为2,滤波器尺寸为N=CEIL(SIGMA*3)*2+1。
Ø BW = EDGE(I,'zerocross',TH,H);采用用户给定的滤波器H进行边缘增强后根据过零点提取边缘。
Ø BW = EDGE(I,'canny'); BW = EDGE(I,'canny',TH);BW = EDGE(I,'canny',TH,SIGMA);
Canny方法提取边缘。参数定义同Marr算子。
2.7二维滤波
l 生成特定的二维数字滤波器:fspecial
h = fspecial(type);
h = fspecial(type,parameters);
滤波器类型type可以是:
'sobel' for a Sobel horizontal edge-emphasizing filter
'prewitt' for a Prewitt horizontal edge-emphasizing filter
'gaussian' for a Gaussian lowpass filter
'laplacian' for a filter approximating the two-dimensional Laplacian operator
'log' for a Laplacian of Gaussian filter
'average' for an averaging filter
'unsharp' for an unsharp contrast enhancement filter
对于后边五种类型的滤波器,可以设置相应的滤波器参数parameter,若省略则取各自的缺省值。
l 采用频率抽样法生成二维数字滤波器:fsamp2
h = fsamp2(Hd);
fsamp2 designs two-dimensional FIR filters based on a desired two-dimensional frequency response sampled at points on the Cartesian plane.
h = fsamp2(Hd) designs a two-dimensional FIR filter with frequency response Hd, and returns the filter coefficients in matrix h. (fsamp2 returns h as a computational molecule, which is the appropriate form to use with filter2.)
l 二维滤波:filter2
B = filter2(h,A);对图像A作二维滤波,滤波器由上述方法产生。
l 中值滤波:medfilt2
B = medfilt2(A,[m n]);对图像A作中值滤波,邻域大小由[m n]决定,缺省为[3 3]。
2.8 图像变换
fft2 ifft2 dct2 idct2
2.9 邻域及块操作
blkproc nlfilter
3. 类型转换
rgb2gray
4. Matlab集成环境及自定义Matlab函数
4.1 Matlab集成环境
Matlab集成环境的主体是它的“Command Window”,可在其中输入并执行各种matlab操作。比如输入matlab命令path并回车,则返回matlab当前?%B
Matlab图像处理入门的更多相关文章
- Matlab 图像处理入门
一些(形态学)图像处理方法如下: I = imread('pic.jpg'); I2 = rgb2gray(I); figure,imshow(I); title('原图'); figure,imsh ...
- c#图像处理入门(-bitmap类和图像像素值获取方法)
c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...
- Atitit MATLAB 图像处理 经典书籍attilax总结
Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...
- Atitit MATLAB 图像处理attilax总结
Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...
- Matlab图像处理函数:regionprops
本篇文章为转载,仅为方便学术讨论所用,不用于商业用途.由于时间较久,原作者以及原始链接暂时无法找到,如有侵权以及其他任何事宜欢迎跟我联系,如有侵扰,在此提前表示歉意.----------------- ...
- MATLAB图像处理函数汇总(二)
60.imnoise 功能:增加图像的渲染效果. 语法: J = imnoise(I,type) J = imnoise(I,type,parameters) 举例 I = imread('eight ...
- MATLAB图像处理函数汇总(一)
1.applylut功能: 在二进制图像中利用lookup表进行边沿操作.语法:A = applylut(BW,lut)举例lut = makelut('sum(x(:)) == 4',2);BW1 ...
- MATLAB图像处理基础
MATLAB图像处理基础 2.2.1 图像文件格式及图像类型 1.MATLAB支持的几种图像文件格式: ⑴JPEG(Joint Photogyaphic Expeyts Group):一种称为联合图像 ...
- matlab图像处理
matlab图像处理 转自:http://www.cnblogs.com/lovebay/p/5094146.html 1. 图像和图像数据 缺省情况下,MATLAB将图像中的数据存储为双精度类型(d ...
随机推荐
- CUDA编程学习(二)
将数据加载到GPU后,如何在grid下的block进行并行计算(一个grid包含多个block) /****How do we run code in parallel on the device** ...
- .NET Core手记 - Json.NET的使用
Json.NET大家很熟悉了,很流行的高性能Json库,很棒的是Json.NET也支持了.NET Standard框架,也就意味着我们可以在.NET Core项目里使用了. 创建一个.NET Core ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
- WPF开发时光之痕日记本(一)——富文本编辑器
本篇给大家推荐一个 WPF 版的富文本编辑器,SmithHtmlEditor,具体网址大家可以找一找,我在这个编辑器的基础上修改了界面,增加了一些功能,模仿了kindeditor 的界面,鉴于自己现在 ...
- 【Visual Studio】在VS2012中使用VSXtra
最近工作中需要把之前为VS 2010写的扩展迁移到VS 2012上.在将工程版本改为VS2012之后,代码没有修改,直接编译通过,也可以安装到VS2012上. 不过,在实际使用的时候,却报错,提示“T ...
- xsd、wsdl生成C#类的命令行工具使用方法
1.xsd生成C#类命令 示例:xsd <xsd文件路径> /c /o:<生成CS文件目录> <其他参数> 参数说明: /c 生成为cs文件,/d 生成DataSe ...
- 14.C#属性访问器、命名空间、pragma指令(七章7.3-7.5)
看到一些零星的知识片,今天就用自己的理解说明下,也是因为太简单了,一下就过的,也是我们日常开发中常用.留下一个脚印,当书不在手上的,也能翻出来看看.说下属性访问器.命名空间和pragma指令. 属性访 ...
- Bootstrap3.0学习第十六轮(进度条、媒体对象、列表组、面板)
详情请查看http://aehyok.com/Blog/Detail/23.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...
- addLoadEvent方法解析
onload方法在网页加载完毕时,会自动执行,但是该方法有个缺点就是只能执行一个方法. onload的限制 比如下面的代码: <script type="text/javascript ...
- 利用NABC模型进行竞争性需求分析
利用NABC模型进行竞争性需求分析: 1>N(Need 需求) 越来越多的,各式各样的游戏层出不穷,大的小的中等的都已经琳琅满目了,用户貌似都看不过眼了.现在大游戏费时伤神,当然了得在有 ...