資源簡介
matlab 實現了四叉樹的分割算法 算法中對實例圖片進行了分割,matlab7.0編譯通過

代碼片段和文件信息
clear;
PicC=imread(‘lake256.jpg‘);
Threshold=0.2???%qtdecomp的參數
MinDim=4;???%qtdecomp的參數
[mnlayer]=size(PicC);?
PicOut=255+zeros(mn);%255是白色的值,生成一個白色的圖片
if(layer==3)
????Pic=rgb2gray(PicC);%如果是彩色圖像,則轉換為灰度圖像
end
PicDivide=qtdecomp(PicThresholdMinDim);%四叉樹分割
List=find(PicDivide);%PicDivide中非零元素的位置,List為列向量
List=List‘;?%轉置List,使其為行向量
NumMin=0;???%邊長為MinDim的塊的數量
NumNotMin=0;%邊長大于MinDim的塊的數量
for?i=List
????if?PicDivide(i)==MinDim
????????NumMin=NumMin+1;
????else
????????NumNotMin=NumNotMin+1;
????end
end
RatioEnt=strcat(‘邊長為最小值的塊數與其他塊的總數的比值為:‘num2str(NumRatio));
%BlockNum=size(List);???以下四行計算四叉樹分割得到的塊與圖像面積的比
%BlockNum=BlockNum(2);
%BlockRatio=BlockNum/(m/4)/(m/4);
%BlockEnt=strcat(‘四叉樹分割得到的塊與圖像面積的比是‘num2str(BlockRatio));
for?i=List
????[xy]=ind2sub(size(PicDivide)i);%將線性序列轉變為行列序列
????DSize=PicDivide(xy)-1;?%需要減1,比如坐標為20,邊長為5,則方塊的邊界為20+5-1=20
????PicOut(x:(x+DSize)y)=ones(DSize+11);%左側邊
????PicOut(xy:(y+DSize))=ones(1DSize+1);%上側邊
????PicOut(x:(x+DSize)y+DSize+1)=ones(DSize+11);%右側邊
????PicOut(x+DSize+1y:(y+DSize))=ones(1DSize+1);%下側邊
end
subplot(121);imshow(PicC);
subplot(122);imshow(uint8(PicOut));
xlabel(RatioEnt);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1380??2009-04-15?00:01??PicBlock.m
?????文件??????12607??2009-03-29?09:17??lake256.JPG
-----------?---------??----------?-----??----
????????????????13987????????????????????2
評論
共有 條評論