注:某些函数有些过时
I = [ 1 1 0 0 1 1 1 0 1 ] I= \left[ \begin{matrix} 1&1&0 \\ 0&1&1 \\ 1&0&1 \end{matrix} \right] I=⎣⎡101110011⎦⎤
只考虑上下左右:4-邻域
r | ||
---|---|---|
r | p | r |
r |
只考虑对角:对角邻域
s | s | |
---|---|---|
p | ||
s | s |
考虑全部:8-邻域
s | r | s |
---|---|---|
r | p | r |
s | r | s |
用于描述一组目标物体之间的相互关系
RGB图像转换为灰度图像: X=rgb2gray(I)
RGB图像转换为索引图像: X=rgb2ind(I)
还可以输入参数项dither_option
,选择是否使用抖动
RGB图像一个像素占用三个字节, 分别存储R、G、B分量的值,而索引图像一个像素占用一个字节
索引模式主要用于网络上的图片传输和一些对图像象素、大小等有严格要求的地方
灰度图像转换为索引图像
[X,map]=gary2ind(I,n)
[X,map]=gary2ind(BW,n)
索引图像转换为灰度图像:I=ind2gray(X,map)
输入图像的数据类型可以是double型或unit8型,但输出为double型
索引图像转换为RGB图像:RGB=ind2rgb(X,map)
输入图像的数据类型可以是double型、unit8型或unit16型,但输出为double型
二值图像的转换:im2bw()
im2bw()
若输入的不是灰度图像,先将其转换为灰度图,再通过阈值法转换为二值图mat2gray(X,[xmin,xmax])
INFO=imfinfo('filename','fmt')
或INFO=imfinfo('filename,fmt')
结构数组成员名 | 所代表含义 |
---|---|
Filename | 文件名称 |
FileMoDate | 文件最后修改日期和时间(日-月-年 时:分:秒) |
FileSize | 文件大小(子节) |
Format | 文件扩展名 |
FormatVersion | 文件格式版本号 |
Width | 图像宽度(像素) |
Height | 图像高度(像素) |
BitDepth | 每个像素所占位宽 |
ColorType | 图像类型 |
A = imread(filename)
A = imread(filename,fmt)
A = imread(___,idx)
A = imread(___,Name,Value)
[A,map] = imread(___)
[A,map,transparency] = imread(___)
- A = imread(filename) 从 filename 指定的文件读取图像,并从文件内容推断出其格式。如果 filename 为多图像文件,则 imread 读取该文件中的第一个图像。
- A = imread(filename,fmt) 另外还指定具有 fmt 指示的标准文件扩展名的文件的格式。如果 imread 找不到具有 filename 指定的名称的文件,则会查找名为 filename.fmt 的文件。
- A = imread(___,idx) 从多图像文件读取指定的图像。此语法仅适用于 GIF、PGM、PBM、PPM、CUR、ICO、TIF、SVS 和 HDF4 文件。您必须指定 filename 输入,也可以指定 fmt。
- A = imread(___,Name,Value) 使用一个或多个名称-值对组参数以及先前语法中的任何输入参数来指定格式特定的选项。
- [A,map] = imread(___) 将 filename 中的索引图像读入 A,并将其关联的颜色图读入 map。图像文件中的颜色图值会自动重新调整到范围 [0,1] 中。
- [A,map,transparency] = imread(___) 另外还返回图像透明度。此语法仅适用于 PNG、CUR 和 ICO 文件。对于 PNG 文件,如果存在 alpha 通道,transparency 会返回该 alpha 通道。对于 CUR 和 ICO 文件,它为 AND(不透明度)掩码。
imwrite(A,filename)
imwrite(A,map,filename)
imwrite(___,fmt)
imwrite(___,Name,Value)
- imwrite(A,filename) 将图像数据 A 写入 filename 指定的文件,并从扩展名推断出文件格式。imwrite 在当前文件夹中创建新文件。输出图像的位深取决于 A 的数据类型和文件格式。对于大多数格式来说:
- 如果 A 属于数据类型 uint8,则 imwrite 输出 8 位值。
- 如果 A 属于数据类型 uint16 且输出文件格式支持 16 位数据(JPEG、PNG 和 TIFF),则 imwrite 将输出 16 位的值。如果输出文件格式不支持 16 位数据,则 imwrite 返回错误。
- 如果 A 是灰度图像或者属于数据类型 double 或 single 的 RGB 彩色图像,则 imwrite 假设动态范围是 [0,1],并在将其作为 8 位值写入文件之前自动按 255 缩放数据。如果 A 中的数据是 single,则在将其写入 GIF 或 TIFF 文件之前将 A 转换为 double。
- 如果 A 属于 logical 数据类型,则 imwrite 会假定数据为二值图像并将数据写入位深为 1 的文件(如果格式允许)。BMP、PNG 或 TIFF 格式以输入数组形式接受二值图像。
- 如果 A 包含索引图像数据,则应另外指定 map 输入参数。
- imwrite(A,map,filename) 将 A 中的索引图像及其关联的颜色图写入由 map filename 指定的文件。
- 如果 A 是属于数据类型 double 或 single 的索引图片,则 imwrite 通过从每个元素中减去 1 来将索引转换为从 0 开始的索引,然后以 uint8 形式写入数据。
- 如果 A 中的数据是 single,则在将其写入 GIF 或 TIFF 文件之前将 A 转换为 double。
- imwrite(___,fmt) 以 fmt 指定的格式写入图像,无论 filename 中的文件扩展名如何。您可以在任何先前语法的输入参数之后指定 fmt。
- imwrite(___,Name,Value) 使用一个或多个名称-值对组参数,以指定 GIF、HDF、JPEG、PBM、PGM、PNG、PPM 和 TIFF 文件输出的其他参数。您可以在任何先前语法的输入参数之后指定 Name,Value。
imshow()
,也可用imtool()
impixel()
:返回像素或像素集的数据值,可将像素坐标作为函数的输入参数,也可以用鼠标选中像素impixelinfo()
:在当前显示的图像中创建一个像素信息工具,可显示鼠标光标所在像素点的信息,并且可以显示图像窗口中所有图像的像素信息aviread()
(旧版本)、aviinfo()
(旧版本)、movie()
mmfileinfo
、mmreader()
、read()
imwarp()
B = imwarp(A,tform)
B = imwarp(A,D)
[B,RB] = imwarp(A,RA,tform)
[___] = imwarp(___,interp)
[___] = imwarp(___,Name,Value)
- B = imwarp(A,tform) 根据几何变换 tform 来变换数值、逻辑或分类图像 A。该函数在 B 中返回变换后的图像。
- B = imwarp(A,D) 根据位移场 D 变换图像 A。
- [B,RB] = imwarp(A,RA,tform) 变换由图像数据 A 指定的空间参照图像及其关联的空间参照对象 RA。输出是由图像数据 B 指定的空间参照图像及其关联的空间参照对象 RB。
- [___] = imwarp(___,interp) 指定要使用的插值的类型。
- [___] = imwarp(___,Name,Value) 指定名称-值对组参数来控制几何变换的各个方面。
imcrop | 裁剪图像 |
---|---|
imcrop3 | Crop 3-D image |
imresize | 调整图像大小 |
imresize3 | Resize 3-D volumetric intensity image |
imrotate | 旋转图像 |
imrotate3 | Rotate 3-D volumetric grayscale image |
imtranslate | Translate image 转换图像 |
impyramid | Image pyramid reduction and expansion 对图像进行成倍的放大与缩小 |
调整灰度图像的明暗对比度
灰度变换增强
imhist()
获取直方图直方图增强
是根据输入图像的灰度概率分布来确定其对应的输出灰度值,通过扩展图像的动态范围达到提升图像对比度的目的
J=histeq(I)
hgram=ones(1,256); J=histeq(I);
- 通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图
- 有时并不需要图像的直方图具有整体的均匀分布(均衡化),而希望直方图与规定要求的直方图一致,这就是直方图规定化。可以增强特定灰度级分布范围内的图像
均值:mean()
mean(A,dim)
mean(A,1)
=mean(A)
mean2(A)
=mean(mean(A))
方差:std()
标准差:std2()
二维相关系数:corr2()
imcontour(I,n)
:I为灰度图像的二维数据矩阵;指定等高线条数为n,缺省则函数自动选取对图像中每个像素为中心的邻域进行一系列的运算,然后将得到的结果代替原来的像素值。
线性空域滤波
J=imfilter(I,h);
非线性空域滤波
medfilt2()
适用于去除图像中的椒盐噪声,平滑效果优于均值滤波B = ordfilt2(A, order, domain)
J = wiener2(I,[m n],noise)
[J,noise_out] = wiener2(I,[m n])
频域增强:将图像经傅里叶变换,从空间域变换到频率域fft2()
,然后在频域内进行处理,最后再反变换回空间域ifft2()
修正或增强图像,包括平滑、锐化和边缘增强。
O ( i , j ) = ∑ m , n I ( i + m , j + n ) ∗ K ( m , n ) O(i,j) = \sum_{m,n}^{ }I(i+m,j+n)*K(m,n) O(i,j)=m,n∑I(i+m,j+n)∗K(m,n)
沿图像退化逆过程进行处理,达到抑制噪声,改善图像质量的目的。
分类
图像添加噪声:g = imnoise(f, type, parameters)
medfilt2()
:能很好地保留图像边缘,适合去除椒盐噪声,优于均值滤波wiener2()
:使用像素级自适应低通 Wiener 滤波器对灰度图像 I 进行滤波deconvwnr()
:计算量低、抗噪声性能好deconvreg()
deconvlucy()
deconvblind()
利用物体和背景在某种图像特性上的差异
J=edge(I,'roberts',35/255)
edge(I,'canny')
:低误码率、高定位精度和抑制虚假边缘watershed()
图像某些性质在空间域很难获得,故将图像从空间域变换到变换域处理后再反变换。
radon()&iradon()
获取平移旋转投影数据
fft()&ifft()
从空间域转换为频率域,可进行图像分析、增强和压缩。
傅里叶变换物理意义:将图像的灰度分布函数变换为图像的频率分布函数
fft()
:一维离散傅里叶变换
fft2()
:二维离散傅里叶变换=fft(fft())
fftshift()
:平移
以一组不同频率和幅值的余弦函数和来近似一幅图像,实际上是傳立叶变换的实数部分
对于一幅图像,其大部分可视化信息都集中在少数的变换系数上。因此,离散余弦变换经常用于图像压缩,例如国际压缩标准的JPEG格式
图像块操作:blkproc()
Hadamard变换、Hough变换(图像识别几何形状)以及图像的小波变换等