利用matlab如何将一幅图片按尺寸分割成若干小图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用matlab如何将一幅图片按尺寸分割成若干小图片相关的知识,希望对你有一定的参考价值。

这样的图是没有现成的函数帮你切割出来单个小圆的,我不知道是谁替你想出的这个方法,也不知道你有什么目的,但这绝对是个笨办法,只能靠机械式的数学算法,程序编出来没有适用性,不过如果你要是只针对这一个图我可以给你程序:设原始图片是im_i,你事先还必须测量出来边缘到第一个圆心的距离设为a1(长边)和b1(短边)以及两圆心之间的距离a2,才能进行初始化
a=a2/2;
A=a1+a;
B=b1+a;
[M,N]
=
size(im_i);
im_o
=
zeros(M,N);
im1=im_i(0:A,0:B);%第一个圆
for
k1=A:a2:M
for
k2=B:a2:N
.
.
.
剩下的就那么存就行了,你这是定位到圆,假如你想把图片直接切割成M*N块的图像直接用imwrite就行了
参考技术A >>
a=magic(5)
a
=
17
24
1
8
15
23
5
7
14
16
4
6
13
20
22
10
12
19
21
3
11
18
25
2
9
>>
b=[a(1:3,1:3)]
b
=
17
24
1
23
5
7
4
6
13
>>
c=[a(1:3,4:5)]
c
=
8
15
14
16
20
22
这样就可以分成几个小矩阵啦
专门的语句,来分,貌似没有,只能取元素
a(i,j)取对应的元素而已,也可以多个

怎样利用matlab对一幅图像进行分块以及重组?

就是将指定的图像分解成若干个大小相等的块,进行某些运算后在重组成一幅图。
能不能给出分块函数的名称或是源代码?
高手帮帮忙!

用col2im函数就行,

    如果是将图像分割成块的时候用的im2col参数为'distinct',那么用col2im函数时参数也是'distinct',

    如果分割图像的时候参数为'sliding',那么用需要用reshape+accumarray函数解决。


参考技术A clear
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如何将一幅图片按尺寸分割成若干小图片的主要内容,如果未能解决你的问题,请参考以下文章

利用matlab将一张图片分割成10×10的小图片,求程序!

怎样利用matlab对一幅图像进行分块以及重组?

Matlab中如何只把figure中的图像区域保存为图片文件

基于MATLAB均值漂移图像分割技术

matlab怎么把一幅图片平分成若干份

MATLAB中如何将一幅图像改为不同的亮度级?