利用matlab将一张图片分割成10×10的小图片,求程序!
这样的图是没有现成的函数帮你切割出来单个小圆的,我不知道是谁替你想出的这个方法,也不知道你有什么目的,但这绝对是个笨办法,只能靠机械式的数学算法,程序编出来没有适用性,不过如果你要是只针对这一个图我可以给你程序:设原始图片是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就行了
I=imread('1.jpg');I1=histeq(I);I2=im2bw(I1,0.05);I2=~I2;se = strel('square',11);I3 = imclose(I2,se);I3 = bwareaopen(I3,8);S = regionprops(I3, 'BoundingBox');[m,n]=size(S);imshow(I);hold on;for i=1:m rectangle('position',S(i).BoundingBox,'EdgeColor','r'); text(S(i).BoundingBox(1)-10,S(i).BoundingBox(2),num2str(i),'Color','r','FontSize',12);end
% 图像切片代码
% my_imslice(filename)缺省方式,输出3×3 切片
% my_imslice(filename,rc,cc)输出 rc×cc 切片
function [rgb,mn] = my_imslice
p = imread(filename)
% 图片补齐及计算每片大小
[m,n,h] = size(p)
rp = rc*(fix(m/rc)+1*(mod(m,rc)==1))% 补齐后行像素
frow = fix(rp/rc)% 片行像素
cp = cc*(fix(n/cc)+1*(mod(n,cc)==1))% 补齐后列像素
fcol = fix(cp/cc) % 片列像素
mn = [frow fcol]
pp = p
pp(rp,cp,:) = 0; % 原始数据补齐
% 数据分片、显示
rgb = cell(rc,cc);
for r = 1:rc
end;
扩展资料:
Matlab包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
参考资料来源:百度百科-MATLAB
楼上的太想当然了
clc
clear
src_path='c:\1.jpg'; %原始图片路径
dst_path='c:\pic_div\';%分割图片后保存路径
mkdir(dst_path);%路径不存在则生成
A = imread(src_path); %读入原始图片
[m,n,l] = size(A); %获得尺寸
for i = 1:10
for j = 1:10
m_start=1+(i-1)*fix(m/10);
m_end=i*fix(m/10);
n_start=1+(j-1)*fix(n/10);
n_end=j*fix(n/10);
AA=A(m_start:m_end,n_start:n_end,:); %将每块读入矩阵
imwrite(AA,[dst_path num2str(i) '-' num2str(j) '.jpg'],'jpg'); %保存每块图片
end
end
如上代码已经过验证
挺简单。我就直接不开matlab在上面写了。
A = imread('abc.png');
[m,n] = size(A);
for i = 1:10:m
for j = 1:10:n
imwrite(A(i:i+10,j:j+10),[num2str(i) num2str(j) '.png'],'png');
end
end
如何对许多图片进行分割成4X4的小图片
用matlab 对一组数据进行拟合后,怎么直接显示拟合函数的图像?_百度...
我利用的是Matlab中的应用程序,Curve fitting,首先将数据导入到工作区中,接下来在菜单栏中的应用程序中找到Curve fitting,点击进去,会弹出一个Curve fitting Tool的页面,在页面的左上方会有选择,x\/y\/z等数据,选择好数据之后,接下来要右边会选择拟合的数学模型,选好之后,正下方会有散点图和...
如何用MAtlab把多行资料转化为一列
cell是胞元资料,它里面可以储存的资料型别很多,如果你在一个胞元里面储存的是double型别的资料,你要提取出来,直接用赋值语句即可。 如何把多个JPEG转化为一个PDF PS中储存为-下拉单找到-确定 如何用matlab将大量mat转化为jpg 你这个问题是个具体程式设计的问题,涉及具体的资料转换,请把资料档案发过来看看,才能写程...
用MATLAB求 将101~125等25个数填入一个5行5列的表格中,使其每行每列...
用MATLAB求 将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565 a=100+magic(5)b=sum(a,1),c=sum(a,2),d=sum(diag(a))运行结果是:b = 565 565 565 565 565 c = 565 565 565 565 565 d = 565 ...
怎么用matlab自己定义一个函数,使这个函数可以将一个数组从小到大排列并...
看你想用什么排序方法了,简单一些的话就是O(n^2)的方法如冒泡排序、插入排序和选择排序,复杂一些的有O(n*logn)的快速排序等。一个简单的选择排序可如下写:function S = floorsort( A )S = zeros(size(A));for i = 1:length(A)[a, b] = min(A);S(i) = a;A(b) = [];end ...
将一个离散时间信号进行傅立叶变换,怎样用MATLAB求该傅立叶变换中包含...
基本思路是用fft做傅立叶变换,然后画出频谱图,其中的极值处就是频率值。比如下面这个例子,一个22hz的信号。generate the time index sampling_rate = 100;t1 = 0:1\/sampling_rate:3-1\/sampling_rate;t2 = 3+1\/sampling_rate:1\/sampling_rate:6;t = [t1 t2];determine the frequency of ...
matlab将第一列的元素乘1,第二列乘2,第三列乘3,用三种方法
A = [1 2 3 4;4 5 6 7;7 8 9 9;2 3 5 8];1 A(:,1) = A(:,1)*1;A(:,2) = A(:,2)*2;A(:,3) = A(:,3)*3;2 b = [1 2 3];for p = 1:size(A,1)A(p,1:3) = A(p,1:3).*b;end 3 [m,n] = size(A);for p = 1:m for k = 1:3 A...
用MATLAB+计算1-1000立方和的程序?
以下是一个使用MATLAB编写的程序,可以计算1-1000的立方和:n = 1000; % 设置上限 计算立方和 sum = 0;for i = 1:n sum = sum + i^3;end 输出结果 disp(sum);首先定义了上限值n为1000,然后使用for循环来计算1到n的立方和。具体地,在每次循环中,将当前数字的立方加入到 sum 变量中...
用MATLAB绘图时,如何将数据保存为文本?
matlab x = get; % 获取X轴数据 y = get; % 获取Y轴数据 fileID = fopen; % 创建或打开名为'data.txt'的文件用于写入 fprintf; % 将数据写入文件 fclose; % 关闭文件 这段代码将图形的X轴和Y轴数据保存到一个名为“data.txt”的文本文件中。每个数据点由两个浮点数表示,用制表...
matlab能否用双纵坐标方法将一个散点图和一个柱状图画在一起
plotyy(X1,Y1,X2,Y2,'function1','function2')利用function1指定的函数画X1,Y1数据 利用function2指定的函数画X2,Y2数据 plotyy(X1,Y1,X2,Y2,'scatter','bar')就可以用对X1,Y1数据画点图,X2和Y2画条状图
怎样用MATLAB将输入的一系列数生成矩阵
在命令窗口输入矩阵名,例如 a=1(随便写某个数据)接着,在workspace中找到a,双击a,出现表格。这时可以往里面输入一系列数据。输完后,在命令窗口输入 a,可获得矩阵a
虫卷厚朴: 假设1.有一张图交myMap是256*256的,提取出来放在newMap里面2.从myMap的(n,m)的坐标开始提取.使用的坐标是右上角为原点,x水平向右,y垂直向下.3.图像是rgb的%matlab的图像坐标是右上原点,x垂直向下 newMap(1:32,1:32,:)=...
迁西县19863668485: 怎样用matlab从一张图片中截取一小张图片?
虫卷厚朴: 很简单,先找到你所要的小图的起点像素坐标,xiao = wkeep(da,【小图的起点坐标】,【小图的大小】)
迁西县19863668485: matlab怎么把一幅图片平分成若干份 - ?
虫卷厚朴: 可以用下面语句逐个分割、显示: newim=imcrop(imname,[xmin ymin width height]); subplot(1,3,..) imshow(newim)
迁西县19863668485: 用matlab编程实现图像分割 - ?
虫卷厚朴: A=imread('D:\MATLAB\R2006b\toolbox\images\imdemos\cameraman.tif'); subplot(2,2,1) imshow(A); m=size(A) A1=A(:,1:m/2); subplot(2,2,3) imshow(A1) A2=A(:,m/2:m); subplot(2,2,4) imshow(A2)结果: http://hi.baidu.com/chemical%5Fengineering/album/item/78db349b5b0becb4c8eaf445.html
迁西县19863668485: matlab 实现图片拆分 - ?
虫卷厚朴: 在有些程序中由于图像过大,常常需要我们将图像切割成几个比较小的图案之后在进行相关的处理.[plain] view plain copy print?Img=imread('sssd.png'); imgsize=size(Img) subimg_width=600; subimg_height=1000; num_width_spilt=ceil(imgsize(1...
迁西县19863668485: 如何用MATLAB实现图像分块 - ?
虫卷厚朴: 用subplot()函数可以做到
迁西县19863668485: 如何用matlab分割图像 - ?
虫卷厚朴: 可以用聚类进行分割,MATLAB自带的程序,有kmeans,fcm,你在MATLAB中help试试,不会再找我
迁西县19863668485: 利用matlab如何将一幅图片按尺寸分割成若干小图片 - ?
虫卷厚朴: 你需要先知道每一个O占的大小 比如占8*8个像素SkipStep=8;%每一个O的大小 和遍历的补偿M=8;N=8;n=0;%编号I=imread('**.jpg');I=rgb2gray(I);%灰度转化[H,W]...
迁西县19863668485: 怎样利用matlab对一幅图像进行分块以及重组? - ?
虫卷厚朴: 用col2im函数就行,1. 如果是将图像分割成zhidao块的时候用的im2col参数为'distinct',那么用col2im函数时参数也是回'distinct', 2. 如果分割图像答的时候参数为'sliding',那么用需要用reshape+accumarray函数解决.
迁西县19863668485: matlab怎么将一张图片分为几部分去处理啊? - ?
虫卷厚朴: 图片读成矩阵然后把矩阵划分成几个部分,然后处理.