遍历文件夹读取图像
cd ('D:\picture\test');
files=dir('*.jpg');
m=size(files,1);
G=zeros(256,256,m);
for i=1:m
G(:,:,i)=imread(files(i).name);
end
(前提是你所有的图像都是灰度的,256x256大小)
另外,matlabn的dir函数中读取的只是当前文件夹下的所有文件(夹),不能取到子文件夹下的文件(夹)。
图像运算
double函数只是将读入图像的uint8数据转换为double类型,一般不使用,常用的是im2double函数,将uint8图像转为double类型,范围为0-1,如果是255的图像,那么255转为1,0还是0,中间的做相应改变。
mat2gray是将最终获得的矩阵转化为灰度图像。常用的为
A = im2uint8(mat2gray(result))
这样就将result矩阵转化为uint8类型的图像。
im2double函数,其语法格式为:
例如:
>> A = randint(5, 5, [0 255])
A =
208 24 40 36 167
231 71 248 107 9
32 140 245 234 217
233 245 124 202 239
161 247 204 245 173
>> mat2gray(A)
ans =
0.8326 0.0628 0.1297 0.1130 0.6611
0.9289 0.2594 1.0000 0.4100 0
0.0962 0.5481 0.9874 0.9414 0.8703
0.9372 0.9874 0.4812 0.8075 0.9623
0.6360 0.9958 0.8159 0.9874 0.6862
>> im2double(A)
ans =
208 24 40 36 167
231 71 248 107 9
32 140 245 234 217
233 245 124 202 239
161 247 204 245 173
对图像进行点对点操作:)
以下主要介绍一下如何读取矩阵的指定行或指定列,举例说明:
x=4:6 %产生一个一维数组,范围从4到6,步长为1
x
插入:通过对x进行插入运算创建矩阵A
>>
A
提取:提取A的前两行和后两列形成矩阵C。
>>
C
置零:将矩阵A
>>
A
将矩阵A的第一列全置1
A(:,1)=1
A
强调一下矩阵的乘法与矩阵的点乘的不同,举例说明:
A=eye(2)
A
>>
B
>>
ans
>>
ans
>>
ans
注意:请大家在E盘建一个目录(imp),在每次启动时都要将这个目录加入到MATLAB的搜索路径中,添加的方法为File----Set
MATLAB中图象数据的读取
A、
其中,X,MAP分别为读出的图象数据和颜色表数据,fmt为图象的格式,filename为读取的图象文件(可以加上文件的路径)。
例:[X,MAP]=imread(’flowers.tif’,’tif’);
B、
imwrite函数用于输出图象,其语法格式为:
imwrite(X,map,filename,fmt)按照fmt指定的格式将图象数据矩阵X和调色板map写入文件filename。
C、
imfinfo函数用于读取图象文件的有关信息,其语法格式为
imfinfo(filename,fmt)
imfinfo函数返回一个结构info,它反映了该图象的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图象的类型等。
例:
imfinfo('rice.tif')
ans
PhotometricInterpretatio
GrayResponseUnit:
ImageDescription:
MATLAB中图象文件的显示
imshow
imshow函数是最常用的显示各种图象的函数,其语法如下:
imshow(X,map)
其中X是图象数据矩阵,map是其对应的颜色矩阵,若进行图象处理后不知道图象数据的值域可以用[]代替map。
需要显示多幅图象时,可以使用figure语句,它的功能就是重新打开一个图象显示窗口。
例:
I=imread(‘rice.tif’);
Imshow(I);
J=imread(‘flowers.tif’);
figure,imshow(J);
转自 http://blog.sina.com.cn/s/blog_4190406301008z5t.html
掌握应用MATLAB语言进行FFT及逆变换的方法
傅立叶变换的基本知识
强及图象压缩等方面。
u=0,1…M-1 v=0,1…N-1 (1)
的复指数信号和表示,而在频率(w1,w2)处的复指数信号的幅度和相位是F(w1,w2)。
例如,函数f(m,n)在一个矩形区域内函数值为1,而在其他区域为0.
假设f(m,n)为一个连续函数,则f(m,n)的傅立叶变换的幅度值(即)显示为网格图。
将傅立叶变换的结果进行可视化的另一种方法是用图象的方式显示变换结果的对数幅值。
MATLAB提供的快速傅立叶变换函数
(1)fft2
fft2函数用于计算二维快速傅立叶变换,其语法格式为:
B = fft2(I)
B = fft2(I)返回图象I的二维fft变换矩阵,输入图象I和输出图象B大小相同。
例如,计算图象的二维傅立叶变换,并显示其幅值的结果,其命令格式如下
load imdemos saturn2
imshow(saturn2)
B = fftshift(fft2(saturn2));
imshow(log(abs(B)),[],'notruesize')
(2)fftshift
MATLAB提供的fftshift函数用于将变换后的图象频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:
B = fftshift(I)
对于矩阵I,B = fftshift(I)将I的一、三象限和二、四象限进行互换。
(2)ifft2
ifft2函数用于计算图象的二维傅立叶反变换,其语法格式为:
B = ifft2(I)
B = ifft2(A)返回图象I的二维傅立叶反变换矩阵,输入图象I和输出图象B大小相同。其语法格式含义与
fft2函数的语法格式相同,可以参考fft2函数的说明。
简单低通滤波器的设计
方法对一幅图象进行处理。比如对图象进行低通滤波等。
际中比较常用的低通滤波器有:巴特沃思(Butterworth)滤波器、指数滤波器(ELPF)、梯形低通滤波
器等。
该矩阵的值为1,其余为0即可。
例:若图象的大小为128*128,则可以这样设计一个低通滤波器:
H=zeros(128);
H(32:96,32:96)=1; %此处的范围是人为取定的,可以根据需要更改。
波,再做傅立叶逆变换命令为
LOWPASS=B.*H; %此处设变换后的矩阵为LOWPASS,另注意这儿是矩阵的点乘。
C=ifft2(LOWPASS);
Imshow(abs(C))
本文详细介绍使用Matlab进行图像处理的方法,包括图像读取、矩阵操作、图像显示及傅立叶变换等内容。同时介绍了如何利用Matlab进行图像遍历读取、图像运算以及低通滤波器的设计。
1094

被折叠的 条评论
为什么被折叠?



