数学建模社区-数学中国

标题: 一段文字拼接的matlab代码,大家可以试试看 [打印本页]

作者: madio    时间: 2013-9-15 23:18
标题: 一段文字拼接的matlab代码,大家可以试试看

破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。


clear;

I=imread('xingshi32.bmp');


if(isgray(I)==0)

disp('请输入灰度图像,本程序用来处理128 *128的灰度图像!');

else

if (size(I)~=[128,128])

disp('图像的大小不合程序要求!');

else

H.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;


%%%%%%%%%%%%%%%%% 分裂主程序%%%%%%%%%%%

while (dim>1)

[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;

end

[i,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;

end

[i,j]=find(S); % 用来寻找四叉机分解结果中大小为S的块的位置

set(meansImageHandle,'CData',ComputeMeans(I,S)); % 显示分解结果块均值图像 Numberofbloks=length(i); %计算块数

%sizev=size(v);

end

end




作者: masterkong    时间: 2013-9-15 23:58
     
辛苦了!   
            

作者: yangnianjinxin    时间: 2013-9-16 01:00
谢站长!!!!
作者: 似曾相识燕归来    时间: 2013-9-16 05:12
Error using isgray (line 8)
Function ISGRAY has been removed.

为什么我的是这个提示?




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5