



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图像分裂合并的matlab实现包含四段程序CODE1:clear;I=imread(xingshi32.bmp);if(isgray(I)=0)disp(请输入灰度图像,本程序用来处理128 *128的灰度图像!);else if (size(I)=128,128) disp(图像的大小不合程序要求!); elseH.color=1 1 1; %设置白的画布figure(H);imshow(I);title(原图像);zeroImage=repmat(uint8(0),128 128);figure(H); %为分裂合并后显示的图设置画布meansImageHandle=imshow(zeroImage);title(块均值图像);%设置分裂后图像的大小由于本图采用了128像素的图blockSize=128 64 32 16 8 4 2;%设置一个S稀疏矩阵用于四叉树分解后存诸数据S=uint8(128);S(128,128)=0;threshold=input(请输入分裂的阈值(0-1):);%阈值threshold=round(255*threshold);M=128;dim=128;tic% 分裂主程序%while (dim1)M,N = size(I);Sind = find(S = dim);numBlocks = length(Sind);if (numBlocks = 0)%已完成break;end rows = (0:dim-1); cols = 0:M:(dim-1)*M; rows = rows(:,ones(1,dim); cols = cols(ones(dim,1),:); ind = rows + cols; ind = ind(:);tmp = repmat(Sind, length(ind), 1);ind = ind(:, ones(1,numBlocks);ind = ind + tmp;blockValues= I(ind);blockValues = reshape(blockValues, dim dim numBlocks);if(isempty(Sind) %已完成 break;endi,j=find(S);set(meansImageHandle,CData,ComputeMeans(I,S);maxValues=max(max(blockValues,1),2);minValues=min(min(blockValues,1),2);doSplit=(double(maxValues)-double(minValues)threshold;dim=dim/2;Sind=Sind(doSplit);Sind=Sind;Sind+dim;(Sind+M*dim);(Sind+(M+1)*dim);S(Sind)=dim;endi,j=find(S); % 用来寻找四叉机分解结果中大小为S的块的位置set(meansImageHandle,CData,ComputeMeans(I,S); % 显示分解结果块均值图像Numberofbloks=length(i); %计算块数%sizev=size(v);endendtocCODE2:function means = ComputeMeans(I, S)% 用来计算给定图像和稀疏矩阵的块均值% I: 为给定的图像% S: 为稀疏矩阵 means = I; for dim = 128 64 32 16 8 4 2 1;values = getblk(I, S, dim);if (isempty(values) %以下的句子是将小块的平均值来代替原图像中相应的块处的像素% if (min(min(values)=60) means = setblk(means, S, dim, 0); %用于合并时的阈值 else %means = setblk(means, S, dim, sum(sum(values,1),2) ./ dim2+std2(values); %means = setblk(means, S, dim, sum(sum(values,1),2) ./ dim2); %means = setblk(means, S, dim, mean2(values); means = setblk(means, S, dim, max(max(values,1),2);end endendCODE3:function val,r,c = getblk(A,S,dim)% I:为待处理的图像% S:为四叉树分解后返回的稀疏矩阵包含四叉树结构% Val是dim * dim*k数组, 包含图像I的四叉树分解中的每个 dim *dim 块% k是四叉树分解的dim *dim块的数量% 如果没有指定大小的块那么返回一个空矩阵M,N = size(A);Sind = find(S = dim);numBlocks = length(Sind);if (numBlocks = 0) % 没有找到任何模块val = zeros(dim,dim,0); % 返回空矩阵r = zeros(0,1);c = zeros(0,1);return;end% 为dim *dom的块计算索引%rows = (0:dim-1);cols = 0:M:(dim-1)*M;rows = rows(:,ones(1,dim);cols = cols(ones(dim,1),:);ind = rows + cols;ind = ind(:);% 计算索引矩阵tmp = repmat(Sind, length(ind), 1);ind = ind(:, ones(1,numBlocks);ind = ind + tmp;val = A(ind);val = reshape(val, dim dim numBlocks);CODE4:function B = setblk(A,S,dim,val)% I 为待处理的图像% S:为四叉树分解后的稀疏矩阵包含四叉树结构% Val:是dim * dim *k数组% K :是四叉树分解的dim * dim 大小块的个数% setblk : 用val中相应的dim * dim块的值取代图像 A 的四叉树分解中的每个% dim *dim 块M,N = size(A);blocks = find(S = dim);numBlocks = length(blocks);if (isequal(size(val,1) size(val,2) size(val,3), dim dim numBlocks)if (prod(size(val) = numBlocks) val = repmat(val(:),dim2 1);endendval = val(:);% 为每一个块算出一个索引rows = (0:dim-1);cols = 0:M:(dim-1)*M;rows = rows(:,ones(1,dim);cols = cols(ones(dim,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级上册劳动技术课工作计划
- 数字营销对消费者决策的影响
- 房地产金融行业市场现状及未来发展趋势展望
- 2025法律职业资格考试试题附答案详解
- 老酒店拆除施工方案
- 工程管理成本控制费用分析表
- 2025年铁路运营管理师新员工岗位专业知识笔试题目及答案
- 2024-2025学年全国统考教师资格考试《教育教学知识与能力(小学)》模考模拟试题含完整答案详解(各地真题)
- 2024年高升专检测卷含答案详解(研优卷)
- 户外运动安全承诺及免责合同
- 牙及牙槽外科
- 文物建筑保护修缮专项方案
- 万用表 钳形表 摇表的使用课件
- 63T折弯机使用说明书
- 营销与2008欧锦赛ktv渠道方案
- 170位真实有效投资人邮箱
- 工程力学ppt课件(完整版)
- 《区域经济学》讲义(1)课件
- 船模制作教程(课堂PPT)课件(PPT 85页)
- 化疗所致恶心呕吐护理
- 低碳生活我先行ppt
评论
0/150
提交评论