用MATLAB将一幅图分割成4*3的小块该怎么做呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用MATLAB将一幅图分割成4*3的小块该怎么做呢?相关的知识,希望对你有一定的参考价值。
参考技术A 直接用矩阵操作就可以了,用imread读取图像,读取的结果在matlab中就是一个矩阵,然后用imwrite把你需要的部分写到新的文件中.例如(时间有限,仅写了灰度图像的一部分):
I=imread('source.bmp');
n=ndims(I);
%获得图像维数,如果是2就是灰度图像,3是彩色图像,需要分别处理
if
n==2
[x,y]=size(I);
%求图像大小
imwrite(I(1:round(x/4),1:round(y/4)),'file.bmp','bmp');
end
这样就把图像分成4*4,最左上角的图像保存到file.bmp中了.
思路大致如此,手头没有matlab,上班ing,供你参考.
以上.
怎样利用matlab对一幅图像进行分块以及重组?
就是将指定的图像分解成若干个大小相等的块,进行某些运算后在重组成一幅图。
能不能给出分块函数的名称或是源代码?
高手帮帮忙!
用col2im函数就行,
如果是将图像分割成块的时候用的im2col参数为'distinct',那么用col2im函数时参数也是'distinct',
如果分割图像的时候参数为'sliding',那么用需要用reshape+accumarray函数解决。
clc
img = double(imread('tire.tif'));
[r c] = size(img);
w = 8;
imgBlock = im2col(img,[w w],'sliding'); imgBlock = imgBlock(:);
[x y] = meshgrid(1:c,1:r);
xx = im2col(x,[w w], 'sliding'); xx = xx(:);
yy = im2col(y,[w w], 'sliding'); yy = yy(:);
img2 = accumarray([yy xx], imgBlock, [], @mean);
figure,imshow(img, []);
figure,imshow(img2,[]); 参考技术B ssf
以上是关于用MATLAB将一幅图分割成4*3的小块该怎么做呢?的主要内容,如果未能解决你的问题,请参考以下文章