注
本文原理解释和很多图片结构来自和参考了知乎大佬大灰熊
的这篇:
https://zhuanlan.zhihu.com/p/542605872
算法解释该算法叫做二维波函数坍缩算法,虽然名听着很玄乎但其实和数独区别也不大,都是一些图决定周围图能取哪些:
在网站 (http://cr31.co.uk/stagecast/wang/tiles_e.html)可以获取一系列的素材图:
这张图每32个像素就是一个图块,整张图能划分为4x4个图块
图像分割且编号% 图片切分
imgList{N*N}=[];
pixNum=size(img,1)/N;
for i=1:N
for j=1:N
imgList{sub2ind([N,N],i,j)}=...
img(((i-1)*pixNum+1):(i*pixNum),...
((j-1)*pixNum+1):(j*pixNum),:);
end
end
比如编号为10的图像右侧只有几张图可以与之相邻:
可以通过计算边界的均方根误差,若是误差小于一定值就认为可以相连(就有点像某年数学建模国赛碎纸片拼接第一问):
% 构建联通表
imgAdjList(N*N).r=[];
imgAdjList(N*N).l=[];
imgAdjList(N*N).u=[];
imgAdjList(N*N).d=[];
for i=1:N*N
imgC=imgList{i};
imgAdjList(i).r=[];
imgAdjList(i).l=[];
imgAdjList(i).u=[];
imgAdjList(i).d=[];
for j=1:N*N
imgS=imgList{j};
% 以下是均方根误差检测部分
% 检测是否右联通 -----------------------------------------------------------
rImgC=imgC(:,end,:);rImgC=rImgC(:);
rImgS=imgS(:,1,:);rImgS=rImgS(:);
rErr=sqrt(mean((rImgC-rImgS).^2));
if rErr
关注
打赏