matlab的数组下标是从1开始的!!!
imread() 从图形文件读取图像
img=imread('su.bmp')
matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算
img=double(img)
imwrite() 将图像写入图形文件
%将一个 50×50 的灰度值数组写入myGray.png图片。 A = rand(50); imwrite(A,'myGray.png')
imhist() 显示图像的灰度直方图
灰度直方图反映了灰度图像中不同灰度级出现的统计情况
imhist(img)
mod() 取模函数
mod(a,b) 求 a%b
rem()也是取模运算,mod()和rem()的区别在于当a和b有负数的时候
bitand() 按位与
返回两个数值型数值在按位进行 AND 运算后的结果
%求a&b x = bitand(a,b)
fopen() 打开文件
f_id = fopen("a.txt",'r') %打开要读取的文件 f_id = fopen("a.txt",'w+') %打开或创建要读写的新文件。如果原来有内容会擦掉重新写
r : 只能读, 必须存在, 可在任意位置读取
w : 只能写, 可以不存在, 必会擦掉原有内容从头写
r+ : 可读可写, 必须存在, 可在任意位置读写, 读与写共用同一个指针
w+ : 可读可写, 可以不存在, 必会擦掉原有内容从头写
fread() 读取文件
fread函数主要用法是从文件中读取二进制数据
[ msg, len_total] = fread( f_id, 'ubit1') %'ubit1'是一次读取一个二进制位,就是一次读取一个比特 %'ubit8'是一次读取8个二进制位,就是一次读取一个字节 %'ubit4'是一次读取4个二进制位
fwrite() 写入文件
fwrite( frr, 1, 'ubit1') %'ubit1'是一次写入一个二进制位 % 这句话的意思是将1写进去
bitshift() 移位函数
a = bitshift(A,k) %将A向左偏移K位,这等效于乘以2的k次方
rand() 生成随机数
rand(a,b) %生成a行b列的随机数,大小为(0,1)的double % a和b是行数列数,生成随机数的大小一直是(0,1) rand(n) %生成n行n列的随机数,大小为(0,1)的double
dct2() / dctmtx() 进行DCT变换
I = rand(N) D = dct2(I) %对I进行DCT变换 %I是N*N的矩阵
%如果矩阵I是N×N方阵,则I的DCT变换可用T×I×T'来计算,注意其中的N是维数,不是矩阵 T = dctmtx(N) D = T * I * T'
即 dct2(I)= T*I*T'
blkproc() 对图像进行分块处理
即block processing的意思
函数调用形式:B = blkproc(A,[m n],fun, parameter1, parameter2, ...)
[m n] :图像以m*n为分块单位,对图像进行处理(如8像素*8像素)Fun: 应用此函数对分别对每个m*n分块的像素进行处理parameter1, parameter2: 要传给fun函数的参数例:pic=imread('lena.bmp'); img=blkproc(pic,[8,8],'dct2'); 该例中把lena.bmp图片分成8*8像素块进行dct2变换。
B=blkproc(I,[8,8],'P1*x*P2',T,T'); %x就是每一个分成的8*8大小的块,P1*x*P2相当于像素块的处理函数,p1=T p2=T’,也就是fun=p1*x*p2'=T*x*T'的功能是进行离散余弦变换