搜档网
当前位置:搜档网 › MATLAB图象处理函数

MATLAB图象处理函数

MATLAB图象处理函数
MATLAB图象处理函数

MATLAB图象处理函数

1. 图象文件处理

I=imread(filename)_______读入图象文件到内部矩阵图象变量(以后简称图象)

imwrite(I,filename)_______将指定图象写到磁盘的图象文件(以后简称图象文件)上imfinfo(filename)_______显示图象文件的信息

2. 图象显示

2.1 基本显示

imshow filename______直接在当前窗口显示图象文件

imshow(I)______在当前窗口显示指定图象

rgb = getimage______将当前窗口显示的图象读入到矩阵图象变量

2.2 多幅图象的显示

figure;imshow(I,map)______在新的图象窗口上显示指定图象(多幅图象显示在不同的图象窗口上)

subplot(m,n,p);imshow(I,map)____在图象窗口的指定位置上显示指定图象(多幅图象显示在同一个图象窗口上)[会因不同图象的map不同而用完系统颜色导致显示出错(尤

其是8bit显示系统上)]

subplot(m,n,p);subimage(I,map)____在图象窗口的指定位置上显示指定图象(多幅图象显示在同一个图象窗口上)[subimage先将图象转化为RGB图象然后再显示,因而不同

图象的map不同而用完系统颜色导致显示出错]

2.3 图象显示的放大和缩小

(1)用图象窗口的工具按钮实现[略]

(2)用命令窗口的函数实现

zoom on______允许进行放大和缩小

zoom in______对图象进行放大

zoom out_____对图象进行缩小

zoom off_____禁止进行放大和缩小

3. 图象的运算

Z = imabsdiff(X,Y) _____求两图象差的绝对值

Z = imadd(X,Y) _____图象相加

IM2 = imcomplement(IM) _____求图象的补

Z = imdivide(X,Y) _____两图象对应象素相除或图象除以常数

Z = imlincomb(K1,A1,K2,A2,...,Kn,An) _____计算一系列图象的线性组合图象

Z = immultiply(X,Y) _____两图象对应象素相乘或图象乘以常数

Z = imsubtract(X,Y) _____图象相减

4. 图象处理

在MATLAB中,图象是以矩阵的形式存放的,二值图象、灰度图象和索引(Indexed)图象用二维矩阵存放,彩色(RGB)图象用三维矩阵存放。前一类图象可以通过双下标访问图象

的象素,如I(i,j),彩色(RGB)图象可以通过三下标访问图象的象素,如I(i,j,k),k=1,2,3分别表示R、G和B三个彩色分量。

4.1 图象直方图

imhist(I)_______绘制指定图象变量的直方图到当前窗口

I1=histeq(I)_______求指定图象的直方图均衡化图象

4.2 图象的灰度变换

J = imadjust(I,[low_in high_in],[low_out high_out])______调整图象的灰度范围

level = graythresh(I)_______求图象的全局门限以便对图象进行二值化处理

BW = im2bw(I,level)[BW = im2bw(X,map,level),BW = im2bw(RGB,level)]_____按指定的门限将指定图象I转化为二值图象。

4.3 图象的格式转换

I2=im2double(I1)_____将图象转换为双精度格式

I2=im2uint8(I1)_____将图象转换为8比特字节格式

I2=im2uint16(I1)_____将图象转换为16比特字格式

4.4 多帧图象的处理

Im=cat(4,I1,I2,I3,…)______将多幅图象I1,I2,I3,…在第4维上合成一个多帧图象Im (cat为矩阵连接函数,cat(2,A,B) 等价于[A,B],cat(1,A,B) 等价于[A;B])

Frm3 = Im(:,:,:,3)_________取多帧图象Im的第3幅图象(可用于赋值、显示)

Imshow(Im(:,:,:,3))________显示多帧图象Im的第3幅图象

montage(Im)_______同时显示多帧图象Im的各幅图象(按列方式组成一个近似正方型) mov = immovie(Im)_____将多帧图象Im转化为电影图象mov

movie(mov)_____显示电影图象mov

===================== 例=========================

The following example loads mri.tif and displays the third frame.

% Initialize an array to hold the 27 frames of mri.tif

mri = uint8(zeros(128,128,1,27));

for frame=1:27 % Read each frame into the appropriate frame in memory

[mri(:,:,:,frame),map] = imread('mri.tif',frame);

end

imshow(mri(:,:,:,3),map);

================================================

4.5 图象的几何变换

4.5.1图象尺寸变换

B = imresize(A,m,method)_____将图象A放大(m>1.0)或缩小(0

B = imresize(A,[mrows ncols], method) _____将图象A变换为mrows行ncols列的图象

B = imresize(...,method,n) _____用nX n模板完成上述几何变换插补中的滤波

B = imresize(...,method,h) _____用指定的模板h完成上述几何变换插补中的滤波

method: 一个可选的参数,决定几何变换插补的方法,可取值如下:

'nearest' (default) uses nearest neighbor interpolation.

'bilinear' uses bilinear interpolation.

'bicubic' uses bicubic interpolation.

4.5.2图象旋转变换

B = imrotate(A,angle, method)____将图象A按指定的插补方法旋转指定的角度,产生一个足

够容得下原始图象的新图象。

B = imrotate(A,angle, method,'crop') ____将图象A按指定的插补方法旋转指定的角度,产生

一个与原始图象一样大小的新图象。

4.5.3图象修剪处理

I = imcrop______交互地选择当前图象窗口的一个区域并赋值给一个新的图象

4.6 图象的校正(Registration)

(1)读入原图象和待校正图象

(2)调用cpselect()函数,选择控制点对,保存控制点对

(3)调用cpcorr()函数,微调控制点对[可选]

(4)调用cp2tform()函数,得到变换参数

(5)调用imtransform()函数,用变换参数对待校正图象进行校正变换

4.7 图象的邻域处理和块处理

4.7.1 模板处理(滑动邻域操作)

对每一个象素按指定的领域进行指定的操作处理。输出图象和输入图象的大小一样。

B = nlfilter(A,[m n],fun)____对图象A按mXn模板调用指定函数进行模板处理

B = nlfilter(A,[m n],fun,P1,P2,...) ____对图象A按mXn模板调用指定函数以及附加参数

P1,P2,..进行模板处理

例如:B = nlfilter(a,[3 3],'min(max(x))*P1+P2',0.5,1)____表示对图象A的每一个象素用其八邻域每列最大值的最小值乘以0.5再加上1代替。

B = nlfilter(A,'indexed',...) ____对索引图象A进行上述模板处理

fun可以是MATLAB表达式或内建函数字符串,如‘mean2’、‘std2’、‘corr2’和‘x*2’,也可以是函数句柄(@函数名)或嵌入函数对象(fun = inline('max(x(:))');),所指定的函数必须接受mXn矩阵且返回一个标量。

4.7.2 独立分块处理

将图象划分为指定大小的分块,然后对每一个块按指定的操作处理,输出图象的每一块内象素个数和取值决定于所指定的操作。

B = blkproc(A,[m n],fun) ____对图象A按mXn分块调用指定函数进行独立分块处理

B = blkproc(A,[m n],fun,P1,P2,...) ____对图象A按mXn分块调用指定函数以及附加参数

P1,P2,..进行独立分块处理

例如:B = blkproc (A,[3 3],’ P1*x*P2’,P1,P2)____表示对图象A的每一个3X3分块分别用左乘矩阵P1再右乘矩阵P2后的矩阵代替。

B = blkproc(A,[m n],[mborder nborder],fun,...) ____对图象A按mXn大小和mborder行

nborder列重叠分块调用指定函数进行独立分块处理

B = blkproc(A,'indexed',...) ____对索引图象A进行上述独立分块处理

fun可以是MATLAB内建函数名字符串,如‘mean2’,‘std2’和‘corr2’,也可以是函数句柄

(@函数名)或嵌入函数对象(fun = inline('max(x(:))');),所指定的函数必须接受mXn矩阵,可以返回一个矩阵(可以与输入矩阵大小一样,也可以不一样)、一个向量或一个标量。

4.7.3 按列向量进行模板和独立分块处理

调用函数colfilt,先将图象的分块变换为一个临时的列块矩阵数据,然后将该临时矩阵一次性传给指定函数,该函数可以按列对临时矩阵进行处理然后返回同样大小的矩阵,colfilt 函数会将输出矩阵转化回原图象的分块作为输出。

B = colfilt(A,[m n],'sliding',f)____按列向量进行模板处理

B = colfilt(A,[m n],'distinct',f)____按列向量进行独立分块处理

4.8 图象的线性滤波和滤波器设计

4.8.1 图象的线性滤波

B = imfilter(A,H)_____对图象A按H指定的滤波核进行相关滤波处理

B = imfilter(A,H,option1,option2,...) _____对图象A按H指定的滤波核进行指定滤波处理

option1,option2,等可以是以下选项:

X____滤波过程中,图象边界以外的象素的取值为数值X[默认值是0]

'symmetric'____滤波过程中,图象边界以外的象素的取值为以边界对称的象素的值。

'replicate'____滤波过程中,图象边界以外的象素的取值为最接近的象素的值。

'circular'____滤波过程中,图象边界以外的象素的取值为图象周期重复后象素的值。

'same'____滤波后的图象与原图象的大小一样[默认选项]。

'full'____滤波后的图象比原图象大[完全滤波,比原图象大size(H)/2]。

'corr'____滤波时将滤波核H按相关滤波核对待(同filter2函数的处理一样)。

'conv'____滤波时将滤波核H按卷积滤波核对待。

h = fspecial(type) ____生成预定的(卷积)滤波核。

type的可能取值如下:

'gaussian' ____ 高斯低通滤波器

'sobel' ____ Sobel 水平边缘增强滤波器

'prewitt' ____ Prewitt水平边缘增强滤波器

'laplacian' ____近似二维拉普拉斯滤波器

'log' ____高斯拉普拉斯滤波器

'average' ____ 平均滤波器

'unsharp' ____ 非锐化(unsharp)对比度增强滤波器

h = fspecial(type,parameters) ____生成指定参数的预定(卷积)滤波核。

4.8.2 图象线性滤波器设计(略)

4.9 图象变换

4.9.1 DFT

Y = fft2(X)_____用FFT算法求图象X的DFT到图象Y

Y = fft2(X,m,n) _____用FFT算法求图象X截断或补零到m行n列后的DFT到图象Y

Y = fft2(X)等价于fft(fft(X).').'_____二维DFT可以用两次一维DFT完成

Y = fftshift(X) _____同Y = fft2(X),但零频率成分被移动到图象的中心

Y = fftshift(X,dim) _____同Y = fft2(X,m,n),但零频率成分被移动到图象的中心

X = ifft2(Y)_____用IFFT算法求图象Y的IDFT到图象X

X = ifft2(Y,m,n) _____用IFFT算法求图象Y截断或补零到m行n列后的IDFT到图象X

X = ifft2(Y)等价于ifft(ifft(Y).').'_____二维IDFT可以用两次一维IDFT完成

X = ifftshift(Y) _____同Y = ifft2(Y),但零频率成分被移动到图象的中心

X = ifftshift(Y,dim) _____同Y = ifft2(Y,m,n),但零频率成分被移动到图象的中心

4.9.2 DCT

DCT的大部分有效数据集中于少数的一些变换系数上,故DCT常用在图象压缩上。

B = dct2(A)_____求图象A的二维离散余弦变换

B = dct2(A,m,n) _____求图象A截断或补零到m行n列后的二维离散余弦变换

B = dct2(A,[m n]) _____求图象A截断或补零到m行n列后的二维离散余弦变换

B = idct2(A)_____求图象(矩阵)A的二维离散余弦反变换

B = idct2(A,m,n) _____求图象(矩阵)A截断或补零到m行n列后的二维离散余弦反变换

B = idct2(A,[m n]) _____求图象(矩阵)A截断或补零到m行n列后的二维离散余弦反变换

dct2()和idct2()是基于fft的算法,对于大尺寸的A具有较好的计算效率。当图象(矩阵)A的尺寸较小时,采用矩阵乘法计算具有更好的计算效率,方法是:用D = dctmtx(n)得到nXn离散余弦变换矩阵D,则B=D*A*D’即为nXn矩阵A的二维离散余弦变换,而A=D’*B*D则为矩阵B的二维离散余弦反变换。当需要对许多小尺寸图象进行二维离散余弦变换时,由于离散余弦变换矩阵D只需求一次,因而其计算效率要比dct2高。在JPEG 压缩算法中,就是把图象分解为8X8或16X16的小块进行离散余弦变换。

4.9.3 投影变换

投影变换可以用于检测图象中的直线方向,反投影变换可以用于从多个一维投影图象中恢复二维图象(CT)。

R = radon(I,theta)_____计算图象I按theta角(单位:角度)旋转后沿y轴(向x轴)的投影(积分)向量R(投影变换)

[R,xp] = radon(...)_____计算图象I按theta角旋转后沿y轴(向x轴)的投影(积分)向量R,同时返回投影(积分)向量R的下标向量于xp

当theta是一个向量时,返回R将是一个矩阵,其每一列对应于theta的一个角度分量。

I = iradon(R,theta) _____计算按theta角(单位:角度)旋转后沿y轴(向x轴)的投影(积分)向量R

对应的原图象I(反投影变换)

I = iradon(R,theta,interp,filter,d,n) _____计算按theta角(单位:角度)旋转后沿y轴(向x轴)的投

影(积分)向量R对应的原图象I(反投影变换),其中后四个参数用于指定反投影

变换中使用的处理方法,取值如下:

[I,h] = iradon(...)_____功能同上面的两个函数,同时在h中返回所使用的滤波器向量

interp 指定反投影变换中使用的插补类型,下面以精度和计算复杂性的升序列出可取值:

'nearest' _____最近邻插补

'linear' _____线性插补(默认)

'spline' _____ spline插补

filter指定反投影变换中使用的频域滤波器类型,可取值为:

'Ram-Lak' _____ 修剪的(cropped)Ram-Lak或斜线频域滤波器(默认)

'Shepp-Logan' _____ Shepp-Logan滤波器,Ram-Lak滤波器乘以正弦函数

'Cosine' _____ 余弦滤波器,Ram-Lak滤波器乘以余弦函数

'Hamming' _____ 汉明(Hamming)滤波器,Ram-Lak滤波器乘以汉明窗

'Hann'_____ Hann滤波器,Ram-Lak滤波器乘以Hann窗

d 是一个取值在0和1之间的标量,用于调整滤波器的频率范围,默认值为1,超过d

的频率成分被置为零。

n 是一个用于指定反投影变换输出图象的行列数,没有n参数时,输出图象的行列数为n = 2*floor(size(R,1)/(2*sqrt(2)))

5. 图象形态处理(Morphological Operations)

基于形状的图象处理。用MATLAB的形态处理函数可以完成诸如对比度增强、噪声去除、细化、填充和图象分割等。

5.1一些基本概念

5.1.1扩张(dilation): 输出图象的象素值是该象素某个邻域的最大值,边界外象素置为最小

值。

5.1.2 腐蚀(erosion): 输出图象的象素值是该象素某个邻域的最小值,边界外象素置为最大

值。

5.1.3 形状数据(structuring element): 一种用于形态处理的数据结构,它定义了处理过程中涉

及到的邻域的形状。该数据结构必须用函数strel()产生。

(1)strel()的用法为:

SE = strel(shape,parameters),其中shape的可取值为字符串'arbitrary'、'pair'、'diamond'、'periodicline'、'disk'、'rectangle'、'line'、'square'、'octagon'、'ball',用以得到不同形状的形状数据。详见strel()的具体说明。

(2)用于形状数据的方法有如下一些:

H = getheight(SE)____ 求形状数据的高度

[offsets,heights] = getneighbors(SE)____ 求形状数据的位置和高度

nhood = getnhood(SE) ____ 求形状数据的邻域矩阵

SEQ = getsequence(SE) ____ 求形状数据的分解序列数组(形状数据数组),SEQ等价于SE,但SEQ的元素是不能再分解的形状数据。

TF = isflat(SE) ____ 判断指定形状数据(数组)是否为平面类型

SE2 = reflect(SE) ____ 求指定形状数据的反转形状数据(旋转180度)

SE2 = translate(SE,V) ____ 求指定形状数据在N维空间上的转移形状数据,V是一个N维向量,其每一个分量指定相应维上的转移位移。如:由se = translate(strel(1), [25

25])得到的形状数据作用于一个图象上J = imdilate(I,se)后,将该图象向下和右平

移了25点。

(3)形状数据的分解

用一个形状数据对图象的形态处理可以等价于若干个较小的形状数据依次对图象进行形态处理,因此一个形状数据可以分解为若干个较小的形状数据,可以用getsequence来得到一个形状数据的分解形状数据。

5.1.4 邻域矩阵:仅由1和0构成的二维矩阵,其中为1的元素指定了与矩阵中心元素对应

位置的邻域分布。邻域矩阵用在strel('arbitrary',nhood)中创建一个具有任意邻域

形状的形状数据。

5.2 图象的扩张

IM2 = imdilate(IM,SE) ____用形状数据SE对图象IM进行扩张处理

IM2 = imdilate(IM,NHOOD) ____用指定邻域矩阵NHOOD决定的形状数据对图象IM进行扩张处理

IM2 = imdilate(…,PACKOPT)____用上述两种方式对一个指定形式的图象进行的扩张处理,其中PACKOPT可以是'ispacked'或'notpacked',用于指定图象的类型,'notpacked'

是默认值。如果PACKOPT是'ispacked',表示图象是一个由impack产生的紧

凑二进制图象,即图象是二维uint32矩阵,此时PADOPT必须是’same’且形状

数据必须是平面(flat)的;如果PACKOPT是'notpacked',表示图象是一个一般

图象矩阵。

IM2 = imdilate(...,PADOPT) ____用上述三种方式对一个指定形式的图象进行的扩张处理,其中PADOPT可以是'same'或'full',用于指定输出图象的大小,'same'是默认值。

如果PADOPT是'same',则输出图象与输入图象的大小一样;如果PADOPT

是'full',则输出图象是进行完全扩张处理后的实际大小。

Imdilate()函数将在给定的形状数据可以分解时,自动采用形状数据的分解来进行图象的扩张处理。

5.3 图象的腐蚀

IM2 = imerode(IM,SE) ____用形状数据SE对图象IM进行腐蚀处理

IM2 = imerode (IM,NHOOD) ____用指定邻域矩阵NHOOD决定的形状数据对图象IM进行腐蚀处理

IM2 = imerode (…,PACKOPT,M)____用上述两种方式对一个指定形式的图象进行的腐蚀处理,其中PACKOPT可以是'ispacked'或'notpacked',用于指定图象的类型,

'notpacked'是默认值。如果PACKOPT是'ispacked',表示图象是一个由impack

产生的紧凑二进制图象,即图象是二维uint32矩阵,此时PADOPT必须是’same’

且形状数据必须是平面(flat)的,此外还要由M参数指定原图象的行数;如果

PACKOPT是'notpacked',表示图象是一个一般图象矩阵。

IM2 = imerode (...,PADOPT) ____用上述三种方式对一个指定形式的图象进行的腐蚀处理,其中PADOPT可以是'same'或'full',用于指定输出图象的大小,'same'是默认值。

如果PADOPT是'same',则输出图象与输入图象的大小一样;如果PADOPT

是'full',则输出图象是进行完全腐蚀处理后的实际大小。

imerode ()函数将在给定的形状数据可以分解时,自动采用形状数据的分解来进行图象的腐蚀处理。

5.4 基于图象扩张和腐蚀的图象处理

5.4.1 基于图象扩张和腐蚀的图象处理函数

BW2 = bwhitmiss(BW1,SE1,SE2)_____等价于imerode(BW1,SE1)&imerode(~BW1,SE2)

IM2 = imclose(IM,SE) _____用同一个形状数据先对图象进行扩张处理,再进行腐蚀处理。IM2 = imopen(IM,SE) _____用同一个形状数据先对图象进行腐蚀处理,再进行扩张处理。IM2 = imbothat(IM,SE) _____等价于用imclose()处理的图象减去原图象。突出图象中符合指定形状数据的边界部分。

IM2 = imtophat(IM,SE) _____等价于用原图象减去经imopen()处理的图象。突出图象中符合指定形状数据的高亮度部分。

联合使用imbothat()和imtophat(),可以增强图象的对比度。如:

J = imsubtract(imadd(I,imtophat(I,se)), imbothat(I,se)); 即可增强图象I的对比度。

5.4.2 二值图象的形态处理

BW2 = bwmorph(BW1,operation)____对二值图象BW1按operation指定的方式进行形态处理BW2 = bwmorph(BW1,operation,n) ____对二值图象BW1按operation指定的方式进行形态处理,共处理n次,当n为Inf时,处理到图象不在改变为止。

Operation是一个字符串,其取值和含义如下:

'bothat'____等价于imbothat()处理。

'bridge'____连接断开的象素,如图象:1 0 0 变成:1 0 0

1 0 1 1 1 1

0 0 1 0 0 1

'clean'_____去除孤立象素(例如被0包围的1)

'close'_____等价于imclose()

'diag'______用对角填充去除8连接背景,如图象:0 1 0 变成:0 1 0

1 0 0 1 1 0

'dilate'_____用形状数据ones(3)对图象进行扩张处理

'erode'_____用形状数据ones(3)对图象进行腐蚀处理

'fill'_______填充内部孤立象素(例如被1包围的0)

'hbreak'____断开H型连接的象素,如图象: 1 1 1 变成: 1 1 1

0 1 0 0 0 0

1 1 1 1 1 1

'majority'___如果某象素的3X3邻域内有五个或五个以上的象素为1,则该象素置为1,否则该象素置为0

'open'_____等价于imopen()

'remove'___去除内部象素,如果某象素的4连接邻域都是1,则该象素置为0(只保留边界象素)

'shrink'____n为Inf时,将物体(目标)缩减为一个象素。该操作将内部不含孔的物体(目标)缩减为一个象素,而将内部含孔的物体(目标)缩减为一个环,

该环位于每一个孔和外边界的中间。该操作将保留图象的欧拉数(Euler

number.)。

'skel'______ n为Inf时,将去除物体(目标)的边界点,但保留物体(目标)的连接性(物体(目标)不会断裂),减为一个象素。剩余的象素将构成图象的

骨架。该操作将保留图象的欧拉数(Euler number.)。

'spur'______去除图象中的毛刺象素。

'thicken'____ n为Inf时,在物体(目标)的外边界添加象素点使物体(目标)变粗,该操作一直进行到原先不连接的物体(目标)将要变成8连接为止。该操

作将保留图象的欧拉数(Euler number.)。

'thin'______ n为Inf时,将物体(目标)缩减为一条线。该操作将内部不含孔的物体(目标)缩减为一个最小的连接线条,而将内部含孔的物体(目标)缩减

为一个环,该环位于每一个孔和外边界的中间。该操作将保留图象的欧拉

数(Euler number.)。

'tophat'____等价于imtophat()处理。

BW2 = bwperim(BW1) ____求二值图象的边界象素。边界象素是指其值为1且其邻域内至少

有一个象素的值为0的象素。

BW2 = bwperim(BW1,CONN) ____同bwperim(BW1)。CONN指定了邻域的类型,对于二维图象,取值4和8分别表示4连接和8连接邻域;对于三维图象,取值6、18和26分别表示6连接、18连接和26连接邻域。

5.5图象的形态重建

一种基于图象扩张的图象处理。具有以下三个性质:

◆处理是基于两幅图象,标记(marker)图象和屏蔽(mask)图象,而不是一幅图象

和一个形状数据。

◆处理一直进行到稳定(图象不再改变)为止。

◆处理是基于连接性而不是形状数据。

标记(marker)图象指定了形态重建处理在哪些位置进行,而屏蔽(mask)图象则决定了形态重建处理到什么程度为止。

函数imregionalmin、imregionalmax、imextendedmin和imextendedmax用于找出图象的局部最大和最小区域,这些函数输入一个灰度图象,输出一个二值图象,输出图象中为1的象素即为找出的局部最大和最小区域。函数imhmax和imhmin也能找出图象的局部最大和最小区域,但他们的输入和输出都是灰度图象,输出图象中满足指定门限的局部最大和最小区域的灰度被改变了,不满足指定门限的局部最大和最小区域的灰度被置为其邻域象素的灰度。

5.6图象的距离变换

图象的距离变换提供了一种图象中不同点之间分开程度的度量。函数D=bwdist(BW)对二值图象BW进行距离变换,得到一个距离变换图象D(double类型),对应于BW中为0的点,D中该位置的象素值为BW中该点到与其最近的值为1的点间的距离。

5.7图象中的物体、区域和特征参数测量

(1) 连接区域标注

L = bwlabel(BW,n) ____求二维二值图象BW的连接区域标注图象(矩阵)L,n为4或8分别指定标注中使用4或8连接邻域。连接区域标注图象是一个与原图象大小一样的

double类型的图象,对应于原图象中属于同一个连接区域的象素在标注图象取同一

个非零数值,不同区域用不同的数值表示,背景象素用零表示。

[L,num] = bwlabel(BW,n) ____功能同上,该形式同时在num中返回原图象中连接区域的数量。

L = bwlabeln(BW) ____功能同L=bwlabel(BW,n),但BW可以是二维或二维以上的二值图象。

二维图象时,n取8;三维图象时,n取26;更高维图象时n取conndef(ndims(BW),

'maximal')。

[L,NUM] = bwlabeln(BW) ____功能同bwlabeln(BW),同时在num中返回原图象中连接区域的数量。

[L,NUM] = bwlabeln(BW,CONN) ____功能同上,参数CONN指定标注时使用的连接方式,二维图象时,n可以取4和8;三维图象时,n可以取6、18和26。

观察标记图象的最好方法是将其转换为伪彩色图象显示,可以用RGB = label2rgb(X, @jet, 'k')命令得到一个用MATLAB标准颜色表影射的伪彩色图象,其中的‘k’指定背景用黑色表示。

还可以用find()函数找到指定标注区域所有象素的位置,如:[r,c] = find(bwlabel(BW)==2)

分别在向量r和c中返回第二个区域各象素的行和列的坐标值。

(2) 在二值图象中挑选指定的物体(目标)

bwselect()函数可以按指定的方式和邻域返回二值图象中指定的物体和下标。

(3) 求二值图象中物体(目标)的面积

bwsarea()函数可以求二值图象中物体(目标)[取值为1的象素]的面积。

(4) 求二值图象中的欧拉数

bweuler()函数可以求二值图象的欧拉数。欧拉数定义为二值图象物体(目标)的个数减去孔的个数。

5.8图象的查找表操作

查找表是一个列向量,它的元素代表了特定象素的某种邻域对应于某种组合时的取值,该列向量的长度是指定邻域种各种象素分布方式的组合个数。2X2邻域对应的查找表有16个元素,3X3邻域对应的查找表有512个元素。

进行查找表操作前,首先用makelut()函数创建一个查找表,makelut()函数要求指定一个邻域的大小和对应于邻域的各种组合应产生的输出值的函数。创建完查找表后,便可以用它调用函数applylut()对二值图象进行查找表操作。

6. 图象分析和增强处理

6.1 象素的值和象素统计

(1) 象素的值

函数pixval()以交互的方式显示光标位置处象素的取值和坐标,还能计算两点间的欧拉距离。

函数impixel()即能以交互的方式又能以非交互的方式显示或返回象素的取值和位置。(2) 图象的灰度剖面图(profile)

函数improfile()可以计算并绘制图象中指定一条线段或多条线段上灰度的分布曲线。(3) 图象的轮廓

函数imcontour()可以显示一个图象中的灰度轮廓。

(4) 象素统计

函数mean2()可以计算图象的灰度平均值;函数std2()可以计算图象的灰度标准差;函数corr2()可以计算两个同样大小图象的相关系数。

(5) 区域属性测量

函数regionprops()可以计算图象中指定区域的面积、质心和边框。

6.2 图象分析

(1)边缘检测

函数edge()可以按指定方式和参数求一个图象的边缘二值图象,其中的canny方法是一个比较好的方法。

(2)四叉树分解

函数qtdecomp()可以对图象进行连续的四叉树分间分解,直到分解后的图象不能再分解为止。四叉树分解首先将图象分解为四个正方型区域,再检查每一个区域,对于不满足指定一致性的区域继续分解,直到不能分解为止。四叉树分解可以用于图象自适应压缩的前处理。

6.3 图象增强

(1)灰度调整

函数imadjust()可以按指定的方式进行图象的灰度变换。在指定灰度变换范围时,可以使用函数stretchlim()来决定一个图象的灰度范围,然后再进行灰度变换。在使用imadjust()进行灰度变换时,还可以指定一个Gamma系数,用于进行指定的Gamma校正。

(2)噪声去除

函数imnoise()可以按指定的方式在图象上加入噪声。函数filter2()可以进行线性滤波,去除噪声;函数medfilt2()进行中值滤波,去除噪声;函数viener2()可以进行自适应滤波,去除噪声。

7. 基于区域的图象处理

(1)选择感兴趣的区域

函数roipoly()可以按交互和非交互两种方式产生一个用于确定多边形的感兴趣区域的二值图象,该图象称屏蔽图象,可用于进行基于区域的图象处理。还可以用任意一个二值图象作为屏蔽图象进行基于区域的图象处理。

(2)对指定的区域进行滤波

函数roifilt2()可以对图象的指定区域用指定的滤波器进行滤波。

(3)区域填充

函数roifill()可以对图象的指定区域采用边界插补的方式进行填充处理,可以产生尽可能平滑的填充。

8. 图象的恢复(复原)(去模糊)处理

(1)一些基本概念

▲解卷积:卷积的逆运算

▲失真算子:描述造成图象与原图象不同的处理过程的算子。

▲点光源传输函数(OTF):线性位置不变系统对冲击函数的响应。也是点光源扩散函数的傅立叶变换。

▲点光源扩散函数(PSF):在空域中描述点光源光学失真(扩散)程度的函数。(2)模糊形成的原因:拍摄时物体的运动,由于散焦、使用广角镜头、暴光量少等造成的进

光量减少,显微中光分布失真。

(3)失真模型:g = Hf + n

g ___失真图象H ___失真算子 f ___原图象n ___失真过程等效的叠加噪声

(4)用于图象恢复的几种方法

以下进行函数都需要提供有关PSF的信息。

▲deconvwnr()____用维纳滤波方法进行最小平方解的图象恢复。需要提供有关叠加噪声的信息。

▲deconvreg()____用正规滤波方法进行有约束最小平方解的图象恢复。需要提供有关叠加噪声的信息。

▲deconvlucy()____用加速的阻尼(衰减的)Lucy-Richardson算法使用优化技术和泊松(Poisson)统计进行多叠代的图象恢复。不需要提供有关叠加噪声的信息。

▲deconvblind()____仅需要提供一个PSF的猜测信息,就可以进行与deconvlucy()算法类似的图象恢复。

9. 图象的彩色

(1)如何使用不同的屏幕彩色位深度

▲得到屏幕的彩色深度:函数get(0,'ScreenDepth')将返回一个表示屏幕彩色位深度的整数。返回值可以是8、16、24和32。

▲不同屏幕彩色位深度的限制:16位彩色深度时只能显示32个灰度级别;8位彩色深度时可以显示256个灰度级别。

(2)减少图象中的彩色数量

函数imapprox()可以减少索引图象的颜色数量到指定的值。

函数rgb2ind()可以将RGB图象转化为具有指定颜色数量的索引图象。该函数可以指定采用均匀量化和最小误差量化方法进行彩色空间的分割,也可以指定一个彩色表进行图象的转化。

[注] 索引图象可能产生的问题:

▲在8位显示系统下,索引图象的颜色数量超过256时,一些颜色需要用颜色抖动来实现。

▲有些系统的颜色影射表项不能超过256个。

▲当索引图象的颜色数量超过256时,MA TLAB将用double类型来存储图象,因而用于存储该图象的存储空间将非常大(每个象素用64位存放)。

▲大多数文件格式将索引图象的颜色数量限制为256,如果向这些文件写颜色数量超过256的索引图象时,将产生错误。

(3)将图象转化到其他的颜色空间

▲rgb2ntsc()____将图象从RGB空间转化到NTSC(National Television Systems Committee in the US)空间。

[NTSC的特点是:灰度和颜色空间分离,因此,同一个信号即可以用于彩色图象也可以用于黑白图象。NTSC空间中,数据由三个分量组成:Y(亮度), I(色度)和Q(饱和度)]。

▲ntsc2rgb()____将图象从NTSC空间转化到RGB空间。

▲rgb2ycbcr()____将图象从RGB空间转化到YCbRb空间。

[YCbRb的特点是:灰度和颜色空间分离。YCbRb空间中,数据由三个分量组成:Y(亮度), Cb (篮色差分量, 篮色分量与参考量之差)和Rb (红色差分量,红色分量与参考量之差),Y的取值范围是[16, 235], Cb和Cr的取值范围是[16, 240],剩余的数据空间可以在视频数据中嵌入额外信息]。

▲ycbcr2rgb ()____将图象从YCbRb空间转化到RGB空间。

▲rgb2hsv()____将图象从RGB空间转化到HSV空间。

[HSV的特点是:灰度和颜色空间分离。HSV空间中,数据由三个分量组成:H(色度)、S(饱和度)和V(亮度),该模型更接近人对颜色的感觉方式]。

▲hsv2rgb ()____将图象从HSV空间转化到RGB空间。

《完》胡平平2004.2

非常全非常详细的MATLAB数字图像处理技术

MATLAB数字图像处理 1 概述 BW=dither(I)灰度转成二值图; X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap; [X,map]=gray2ind(I,n)灰度到索引; [X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。灰度图n默认64,二值图默认2; X=graylice(I,n)灰度图到索引图,门限1/n,2/n,…,(n-1)/n,X=graylice(I,v)给定门限向量v; BW=im2bw(I,level)灰度图I到二值图; BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余置0,level在[0,1]之间。 BW=im2bw(RGB,level)RGB到二值图; I=ind2gray(X,map)索引图到灰度图; RGB=ind2rgb(X,map)索引图到RGB; I=rgb2gray(RGB)RGB到灰度图。 2 图像运算 2.1 图像的读写 MATLAB支持的图像格式有bmp,gif,ico,jpg,png,cur,pcx,xwd和tif。 读取(imread): [1] A=imread(filename,fmt) [2] [X,map]=imread(filename,fmt) [3] […]=imread(filename) [4] […]=imread(URL,…) 说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map 为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。URL表示引自Internet URL中的图像。 写入(imwrite): [1] R=imwrite(A,filename,fmt); [2] R=imwrite(X,map,filename,fmt); [3] R=imwrite(…,filename); [4] R=imwrite(…,Param1,V al1,Param2,Val2) 说明:针对第四个,该语句用于指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。例如HDF的Quality,Compression,WriteMode;JPEG的BitDepth,Comment:Empty or not,Mode:lossy or lossless,Quality等。 2.2 图像的显示 方法1:使用Image Viewer(图像浏览器),即运用imview函数。 同时显示多帧图像的所有帧,可用到montage函数。

(完整版)MATLAB常用函数大全

一、MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数(Signum function)。 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1。 rem(x,y):求x除以y的馀数 gcd(x,y):整数x和y的最大公因数 lcm(x,y):整数x和y的最小公倍数 exp(x):自然指数 pow2(x):2的指数 log(x):以e为底的对数,即自然对数或 log2(x):以2为底的对数 log10(x):以10为底的对数 二、MATLAB常用的三角函数 sin(x):正弦函数 cos(x):余弦函数

tan(x):正切函数 asin(x):反正弦函数 acos(x):反馀弦函数 atan(x):反正切函数 atan2(x,y):四象限的反正切函数 sinh(x):超越正弦函数 cosh(x):超越馀弦函数 tanh(x):超越正切函数 asinh(x):反超越正弦函数 acosh(x):反超越馀弦函数 atanh(x):反超越正切函数 三、适用於向量的常用函数有: min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值 mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位数 std(x): 向量x的元素的标准差 diff(x): 向量x的相邻元素的差 sort(x): 对向量x的元素进行排序(Sorting)length(x): 向量x的元素个数 norm(x): 向量x的欧氏(Euclidean)长度sum(x): 向量x的元素总和 prod(x): 向量x的元素总乘积 cumsum(x): 向量x的累计元素总和cumprod(x): 向量x的累计元素总乘积 dot(x, y): 向量x和y的内积 cross(x, y): 向量x和y的外积 四、MATLAB的永久常数

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

matlab图像处理的几个实例

Matlab图像处理的几个实例(初学者用) 1.图像的基本信息及其加减乘除 clear,clc; P=imread('yjx.jpg'); whos P Q=imread('dt.jpg'); P=im2double(P); Q=im2double(Q); gg1=im2bw(P,0.3); gg2=im2bw(P,0.5); gg3=im2bw(P,0.8); K=imadd(gg1,gg2); L=imsubtract(gg2,gg3); cf=immultiply(P,Q); sf=imdivide(Q,P); subplot(421),imshow(P),title('郁金香原图'); subplot(422),imshow(gg1),title('0.3'); subplot(423),imshow(gg2),title('0.5'); subplot(424),imshow(gg3),title('0.8'); subplot(425),imshow(K),title('0.3+0.5'); subplot(426),imshow(L),title('0.5-0.3'); subplot(427),imshow(cf),title('P*Q'); subplot(428),imshow(sf),title('P/Q'); 2.图像缩放 clear,clc; I=imread('dt.jpg'); A=imresize(I,0.1,'nearest'); B=imresize(I,0.4,'bilinear'); C=imresize(I,0.7,'bicubic'); D=imresize(I,[100,200]); F=imresize(I,[400,100]); figure subplot(321),imshow(I),title('原图'); subplot(322),imshow(A),title('最邻近插值'); subplot(323),imshow(B),title('双线性插值'); subplot(324),imshow(C),title('二次立方插值'); subplot(325),imshow(D),title('水平缩放与垂直缩放比例为2:1'); subplot(326),imshow(F),title('水平缩放与垂直缩放比例为1:4');

MATLAB常用函数

MATLAB包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。 开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。 Matlab Main Toolbox——matlab主工具箱 Control System Toolbox——控制系统工具箱 Communication Toolbox——通讯工具箱 Financial Toolbox——财政金融工具箱 System Identification Toolbox——系统辨识工具箱 Fuzzy Logic Toolbox——模糊逻辑工具箱 Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱 Image Processing Toolbox——图象处理工具箱 LMI Control Toolbox——线性矩阵不等式工具箱 Model predictive Control Toolbox——模型预测控制工具箱 μ-Analysis and Synthesis Toolbox——μ分析工具箱 Neural Network Toolbox——神经网络工具箱 Optimization Toolbox——优化工具箱 Partial Differential Toolbox——偏微分方程工具箱 Robust Control Toolbox——鲁棒控制工具箱 Signal Processing Toolbox——信号处理工具箱 Spline Toolbox——样条工具箱 Statistics Toolbox——统计工具箱 Symbolic Math Toolbox——符号数学工具箱 Simulink Toolbox——动态仿真工具箱 Wavele Toolbox——小波工具箱

MATLAB图像处理相关函数

一、通用函数: colorbar显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \ [...]=getimage imshow 显示图像 语法:imshow(I,n) \ imshow(I,[low high]) \ imshow(BW) \ imshow(X,map) \ imshow(RGB)\ imshow(...,display_option) \ imshow(x,y,A,...) \ imshow filename \ h=imshow(...) montage 在矩形框中同时显示多幅图像 语法:montage(I) \ montage(BW) \ montage(X,map) \ montage(RGB) \ h=montage(...) immovie 创建多帧索引图的电影动画 语法:mov=immovie(X,map) \ mov=immovie(RGB) subimage 在一副图中显示多个图像 语法:subimage(X,map) \ subimage(I) \ subimage(BW) \ subimage(RGB) \ subimage(x,y,...) \ subimage(...) truesize 调整图像显示尺寸 语法:truesize(fig,[mrows mcols]) \ truesize(fig) warp 将图像显示到纹理映射表面 语法:warp(X,map) \ warp(I ,n) \ warp(z,...) warp(x,y,z,...) \ h=warp(...) zoom 缩放图像 语法:zoom on \ zoom off \ zoom out \ zoom reset \ zoom \ zoom xon \ zoom yon\ zoom(factor) \ zoom(fig,option) 二、图像文件I/O函数命令 imfinfo 返回图形图像文件信息 语法:info=imfinfo(filename,fmt) \ info=imfinfo(filename) imread 从图像文件中读取(载入)图像 语法:A=imread(filename,fmt) \ [X,map]=imread(filename,fmt) \

MATLAB图象处理函数

MATLAB图象处理函数 1. 图象文件处理 I=imread(filename)_______读入图象文件到内部矩阵图象变量(以后简称图象) imwrite(I,filename)_______将指定图象写到磁盘的图象文件(以后简称图象文件)上imfinfo(filename)_______显示图象文件的信息 2. 图象显示 2.1 基本显示 imshow filename______直接在当前窗口显示图象文件 imshow(I)______在当前窗口显示指定图象 rgb = getimage______将当前窗口显示的图象读入到矩阵图象变量 2.2 多幅图象的显示 figure;imshow(I,map)______在新的图象窗口上显示指定图象(多幅图象显示在不同的图象窗口上) subplot(m,n,p);imshow(I,map)____在图象窗口的指定位置上显示指定图象(多幅图象显示在同一个图象窗口上)[会因不同图象的map不同而用完系统颜色导致显示出错(尤 其是8bit显示系统上)] subplot(m,n,p);subimage(I,map)____在图象窗口的指定位置上显示指定图象(多幅图象显示在同一个图象窗口上)[subimage先将图象转化为RGB图象然后再显示,因而不同 图象的map不同而用完系统颜色导致显示出错] 2.3 图象显示的放大和缩小 (1)用图象窗口的工具按钮实现[略] (2)用命令窗口的函数实现 zoom on______允许进行放大和缩小 zoom in______对图象进行放大 zoom out_____对图象进行缩小 zoom off_____禁止进行放大和缩小 3. 图象的运算 Z = imabsdiff(X,Y) _____求两图象差的绝对值 Z = imadd(X,Y) _____图象相加 IM2 = imcomplement(IM) _____求图象的补 Z = imdivide(X,Y) _____两图象对应象素相除或图象除以常数 Z = imlincomb(K1,A1,K2,A2,...,Kn,An) _____计算一系列图象的线性组合图象 Z = immultiply(X,Y) _____两图象对应象素相乘或图象乘以常数 Z = imsubtract(X,Y) _____图象相减 4. 图象处理 在MATLAB中,图象是以矩阵的形式存放的,二值图象、灰度图象和索引(Indexed)图象用二维矩阵存放,彩色(RGB)图象用三维矩阵存放。前一类图象可以通过双下标访问图象

基于MATLAB图像处理报告

基于M A T L A B图像处理报告一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。 、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。

matlab最常用函数

1、 基本形式 >> y=[0 0.58 0.70 0.95 0.83 0.25]; >> plot(y) 生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的折线。 >> x=linspace(0,2*pi,30); % 生成一组线性等距的数值 >> y=sin(x); >> plot(x,y) 生成的图形是上30个点连成的光滑的正弦曲线。 多重线 在同一个画面上可以画许多条曲线,只需多给出几个数组,例如 >> x=0:pi/15:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 则可以画出多重线。另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程。例如: >> x=linspace(0,2*pi,30); y=sin(x); plot(x,y) >> hold on >> z=cos(x); plot(x,z) >> hold off 线型和颜色 MATLAB对曲线的线型和颜色有许多选择,标注的方法是在每一对数组后加一个字符串参数,说明如下: 线型线方式:- 实线:点线-. 虚点线- - 波折线。 线型点方式: . 圆点+加号* 星号x x形o 小圆

颜色:y黄;r红;g绿;b蓝;w白;k黑;m紫;c青. 以下面的例子说明用法: >> x=0:pi/15:2*pi; >> y1=sin(x); y2=cos(x); >> plot(x,y1,’b:+’,x,y2,’g-.*’) 网格和标记 在一个图形上可以加网格、标题、x轴标记、y轴标记,用下列命令完成这些工作。 >> x=linspace(0,2*pi,30); y=sin(x); z=cos(x); >> plot(x,y,x,z) >> grid >> xlabel(‘Independent Variable X’) >> ylabel(‘Dependent Variables Y and Z’) >> title(‘Sine and Cosine Curves’) 也可以在图形的任何位置加上一个字符串,如用: >> text(2.5,0.7,’sinx’) 表示在坐标x=2.5, y=0.7处加上字符串sinx。更方便的是用鼠标来确定字符串的位置,方法是输入命令: >> gtext(‘sinx’) 在图形窗口十字线的交点是字符串的位置,用鼠标点一下就可以将字符串放在那里。 坐标系的控制 在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,可以用axis命令控制,常用的有: axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值 axis equal 或axis(‘equal’) x轴和y轴的单位长度相同 axis square 或axis(‘square’) 图框呈方形

基于matlab的数字图像处理常用函数

基本界面 1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示:">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42

若要输入矩阵,则必须在每一列结尾加上分号(;),如下例: A = [1 2 3 4; 5 6 7 8; 9 1011 12]; A = 1 2 3 4 5 6 7 8 9 10 11 12 同样地,我们可以对矩阵进行各种处理: A(2,3) = 5 % 改变位於第二列,第三行的元素值 A = 1 2 3 4 5 6 5 8 9 10 11 12 B = A(2,1:3) % 取出部份矩阵B B = 5 6 5 A = [A B'] % 将B转置後以列向量并入A A = 1 2 3 4 5 5 6 5 8 6 9 10 11 12 5 A(:, 2) = [] % 删除第二行(:代表所有列) A = 1 3 4 5

5 5 8 6 9 11 12 5 A = [A; 4 3 2 1] % 加入第四列 A = 1 3 4 5 5 5 8 6 9 11 12 5 4 3 2 1 A([1 4], :) = [] % 删除第一和第四列(:代表所有行) A = 5 5 8 6 9 11 12 5 这几种矩阵处理的方式可以相互叠代运用,产生各种意想不到的效果,就看各位的巧思和创意。 小提示:在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented )的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址。举例来说,在上述矩阵A中,位於第二列、第三行的元素可写为A(2,3) (二维索引)或A(6)(一维索引,即将所有直行进行堆叠後的第六个元素)。 此外,若要重新安排矩阵的形状,可用reshape命令: B = reshape(A, 4, 2) % 4是新矩阵的行数,2是新矩阵的列数 B = 5 8 9 12 5 6 11 5

最常用的matlab图像处理的源代码

最常用的一些图像处理Matlab源代 码 #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白噪声和椒盐噪声的影响 #6:采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波 #7:采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 #8:图像的自适应魏纳滤波 #9:运用5种不同的梯度增强法进行图像锐化 #10:图像的高通滤波和掩模处理 #11:利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理 #12:利用巴特沃斯(Butterworth)高通滤波器对受噪声干扰的图像进行平滑处理 1.数字图像矩阵数据的显示及其傅立叶变换 f=zeros(30,30); f(5:24,13:17)=1; imshow(f, 'notruesize'); F=fft2(f,256,256); % 快速傅立叶变换算法只能处矩阵维数为2的幂次,f矩阵不 % 是,通过对f矩阵进行零填充来调整 F2=fftshift(F); % 一般在计算图形函数的傅立叶变换时,坐标原点在 % 函数图形的中心位置处,而计算机在对图像执行傅立叶变换 % 时是以图像的左上角为坐标原点。所以使用函数fftshift进 %行修正,使变换后的直流分量位于图形的中心; figure,imshow(log(abs(F2)),[-1 5],'notruesize');

2 二维离散余弦变换的图像压缩I=imread('cameraman.tif'); % MATLAB自带的图像imshow(I); clear;close all I=imread('cameraman.tif'); imshow(I); I=im2double(I); T=dctmtx(8); B=blkproc(I,[8 8], 'P1*x*P2',T,T'); Mask=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',Mask); % 此处为点乘(.*) I2=blkproc(B2,[8 8], 'P1*x*P2',T',T); figure,imshow(I2); % 重建后的图像 3.采用灰度变换的方法增强图像的对比度I=imread('rice.tif'); imshow(I); figure,imhist(I); J=imadjust(I,[0.15 0.9], [0 1]); figure,imshow(J); figure,imhist(J);

基于MATLAB图像处理报告

基于MATLAB图像处理报告 一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 3.1、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。 3.2、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载

matlab 常用函数汇总

matlab 常用函数汇总 编程2008-07-10 21:45:20 阅读46 评论0 字号:大中小订阅matlab常用函数 图形注释 Title 图形标题 Xlabel X轴标记 Ylabel Y轴标记 Text 文本注释 Gtext 用鼠标放置文本 Grid 网格线 MATLAB编程语言 Function 增加新的函数 Eval 执行由MA TLAB表达式构成的字串 Feval 执行由字串指定的函数 Global 定义全局变量 程序控制流 If 条件执行语句 Else 与if命令配合使用 Elseif 与if命令配合使用 End For,while和if语句的结束 For 重复执行指定次数(循环) While 重复执行不定次数(循环) Break 终止循环的执行 Return 返回引用的函数 Error 显示信息并终止函数的执行 交互输入 Input 提示用户输入 Keyboard 像底稿文件一样使用键盘输入 Menu 产生由用户输入选择的菜单 Pause 等待用户响应 Uimenu 建立用户界面菜单 Uicontrol 建立用户界面控制 一般字符串函数 Strings MATLAB中有关字符串函数的说明 Abs 变字符串为数值 Setstr 变数值为字符串 Isstr 当变量为字符串时其值为真 Blanks 空串 Deblank 删除尾部的空串 Str2mat 从各个字符串中形成文本矩阵 Eval 执行由MA TLAB表达式组成的串 字符串比较 Strcmp , , , 比较字符串 Findstr 在一字符串中查找另一个子串

Upper 变字符串为大写 Lower 变字符串为小写 Isletter 当变量为字母时,其值为真 Isspace 当变量为空白字符时,其值为真 字符串与数值之间变换 Num2str 变数值为字符串 Int2str 变整数为字符串 Str2num 变字符串为数值 Sprintf 变数值为格式控制下的字符串 Sscanf 变字符串为格式控制下的数值 十进制与十六进制数之间变换 Hex2num 变十六进制为IEEE标准下的浮点数Hex2dec 变十六制数为十进制数 Dec2hex 变十进制数为十六进制数 建模 Append 追加系统动态特性 Augstate 变量状态作为输出 Blkbuild 从方框图中构造状态空间系统Cloop 系统的闭环 Connect 方框图建模 Conv 两个多项式的卷积 Destim 从增益矩阵中形成离散状态估计器Dreg 从增益矩阵中形成离散控制器和估计器Drmodel 产生随机离散模型 Estim 从增益矩阵中形成连续状态估计器Feedback 反馈系统连接 Ord2 产生二阶系统的A、B、C、D Pade 时延的Pade近似 Parallel 并行系统连接 Reg 从增益矩阵中形成连续控制器和估计器Rmodel 产生随机连续模型 Series 串行系统连接 Ssdelete 从模型中删除输入、输出或状态ssselect 从大系统中选择子系统 模型变换 C2d 变连续系统为离散系统 C2dm 利用指定方法变连续为离散系统 C2dt 带一延时变连续为离散系统 D2c 变离散为连续系统 D2cm 利用指定方法变离散为连续系统 Poly 变根值表示为多项式表示 Residue 部分分式展开 Ss2tf 变状态空间表示为传递函数表示 Ss2zp 变状态空间表示为零极点表示

数字图像处理 MATLAB代码

MATLAB实用源代码 图像读取及灰度变换 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I)%输出图像 title('原始图像')%在原始图像中加标题 subplot(1,2,2),imhist(I)%输出原图直方图 title('原始图像直方图')%在原图直方图上加标题 图像旋转 I=imread('cameraman.tif'); figure,imshow(I); theta=30; K=imrotate(I,theta);%Try varying the angle,theta. figure,imshow(K) 边缘检测 I=imread('cameraman.tif'); J1=edge(I,'sobel'); J2=edge(I,'prewitt'); J3=edge(I,'log'); subplot(1,4,1),imshow(I); subplot(1,4,2),imshow(J1); subplot(1,4,3),imshow(J2); subplot(1,4,4),imshow(J3); 1.图像反转 MATLAB程序实现如下: I=imread('xian.bmp'); J=double(I); J=-J+(256-1);%图像反转线性变换 H=uint8(J); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(H); 2.灰度线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); subplot(2,2,1),imshow(I); title('原始图像'); axis([50,250,50,200]); axis on;%显示坐标系 I1=rgb2gray(I); subplot(2,2,2),imshow(I1); title('灰度图像'); axis([50,250,50,200]);

MATLAB中图像函数大全 详解及例子

图像处理函数详解——strel 功能:用于膨胀腐蚀及开闭运算等操作的结构元素对象(本论坛随即对膨胀腐蚀等操作进行讲解)。 用法:SE=strel(shape,parameters) 创建由指定形状shape对应的结构元素。其中shape的种类有 arbitrary' 'pair' 'diamond' 'periodicline' 'disk' 'rectangle' 'line' 'square' 'octagon 参数parameters一般控制SE的大小。 例子: se1=strel('square',6) %创建6*6的正方形 se2=strel('line',10,45) %创建直线长度10,角度45 se3=strel('disk',15) %创建圆盘半径15 se4=strel('ball',15,5) %创建椭圆体,半径15,高度5

图像处理函数详解——roipoly 功能:用于选择图像中的多边形区域。 用法:BW=roipoly(I,c,r) BW=roipoly(I) BW=roipoly(x,y,I,xi,yi) [BW,xi,yi]=roipoly(...) [x,y,BW,xi,yi]=roipoly(...) BW=roipoly(I,c,r)表示用向量c、r指定多边形各点的X、Y坐标。BW选中的区域为1,其他部分的值为0. BW=roipoly(I)表示建立交互式的处理界面。 BW=roipoly(x,y,I,xi,yi)表示向量x和y建立非默认的坐标系,然后在指定的坐标系下选择由向量xi,yi指定的多边形区域。 例子:I=imread('eight.tif'); c=[222272300270221194]; r=[21217512112175]; BW=roipoly(I,c,r); imshow(I)

图像处理matlab源码加实验报告

大学 2016 —2017 学年第 1 学期 数字图像处理课程设计 年级与专业学号姓名 题目:图像的代数运算 目标:1.深入理解图像处理中代数运算的基本作用; 2.掌握在MTLAB中对图像进行代数运算的方法; 3.通过实验分析比较各种代数运算算法的效果。 课程设计日期: 2016年11月11号

一、问题背景 随着移动设备的日渐普及,在日常的生活我们可以直接采集到清晰的图像,但是在工业或勘测领域,仍存在许多图像需要进行处理,以便人眼或机器进行符合其认知逻辑的观察,进而得出结论或进行下一步的作业。 鉴于工业或勘测我们无法直接参与,本文仅通过最为简单的图像代数运算,结合matlab进行实验,借助处理后的直观结果,对图像处理做一些最基本的研究。 二、实验原理 图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式: C(x,y) = A(x,y) + B(x,y) C(x,y) = A(x,y) - B(x,y) C(x,y) = A(x,y) * B(x,y) C(x,y) = A(x,y) / B(x,y) 图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。例如,图像减法就可以用来检测同一场景或物体生产的两幅或多幅图像的误差。 使用MATLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。为了更方便地对图像进行操作,MATLAB图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。下表列举了所有图像处理工具箱中的图像代数运算函数。 表2-1 图像处理工具箱中的代数运算函数 能够接受uint8和uint16数据,并返回相同格式的图像结果。虽然在函数执行过程中元素是以双精度进行计算的,但是MATLAB工作平台并不会将图像转换为双精度类型。 代数运算的结果很容易超出数据类型允许的范围。例如,uint8数据能够存储的最大数值是255,各种代数运算尤其是乘法运算的结果很容易超过这个数值,有时代数操作(主要是除法运算)也会产生不能用整数描述的分数结果。图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。例如,如果数据类型是uint8,那么大于255的结果(包括无穷大

用matlab数字图像处理四个实验

数字图像处理 实验指导书

目录 实验一MATLAB数字图像处理初步实验二图像的代数运算 实验三图像增强-空间滤波 实验四图像分割 3

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: ?亮度图像(Intensity images)

matlab function非常全的 matlab 函数

一、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。!dir&可以在dos状态下查看。 2、who 可以查看当前工作空间变量名,whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键Ctrl+P 返回前一行输入 方向下键Ctrl+N 返回下一行输入 方向左键Ctrl+B 光标向后移一个字符 方向右键Ctrl+F 光标向前移一个字符 Ctrl+方向右键Ctrl+R 光标向右移一个字符 Ctrl+方向左键Ctrl+L 光标向左移一个字符 home Ctrl+A 光标移到行首 End Ctrl+E 光标移到行尾 Esc Ctrl+U 清除一行 Del Ctrl+D 清除光标所在的字符 Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾 Ctrl+C 中断正在执行的命令 4、clc可以命令窗口显示的内容,但并不清除工作空间。 二、函数及运算 1、运算符: +:加,-:减,*:乘,/:除,\:左除^:幂,‘:复数的共轭转置,():制定运算顺序。 2、常用函数表: sin( ) 正弦(变量为弧度) Cot( ) 余切(变量为弧度) sind( ) 正弦(变量为度数) Cotd( ) 余切(变量为度数) asin( ) 反正弦(返回弧度) acot( ) 反余切(返回弧度) Asind( ) 反正弦(返回度数) acotd( ) 反余切(返回度数) cos( ) 余弦(变量为弧度) exp( ) 指数 cosd( ) 余弦(变量为度数) log( ) 对数 acos( ) 余正弦(返回弧度) log10( ) 以10为底对数 acosd( ) 余正弦(返回度数) sqrt( ) 开方 tan( ) 正切(变量为弧度) realsqrt( ) 返回非负根 tand( ) 正切(变量为度数) abs( ) 取绝对值

相关主题