加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab图像处理函数blkproc的解释

(2014-06-02 17:23:22)
分类: matlab
功能:对图像进行分块处理
函数调用形式:B = blkproc(A,[m n],fun, parameter1, parameter2, ...)
B = blkproc(A,[m n],[mborder nborder],fun,...)
B = blkproc(A,'indexed',...)
参数解释:[m n] :图像以m*n为分块单位,对图像进行处理(如8像素*8像素)
          Fun:   应用此函数对分别对每个m*n分块的像素进行处理
          parameter1, parameter2: 要传给fun函数的参数
          mborder nborder:对每个m*n块上下进行mborder个单位的扩充,左右进行nborder个单位的扩充,扩充的像素值为0,fun函数对整个扩充后的分块进行处理。
例子:1 图像压缩
I = imread('cameraman.tif'); 
I=im2double(I);  
T=dctmtx(8);%生成一个8*8 DCT变换矩阵
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'的功能是进行离散余弦变换
  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');  %进行反余弦变换,得到压缩后的图象
imshow(I);   
figure;                            
imshow(I2);      
注意:如果是三维图象(如RGB)则要先将图像转换成图像变成灰度图象或者用reshape函数转换维数

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有