matlab用递归函数统计矩阵内斑块数目前,有一个30*30的矩阵,矩阵中的像素只有1~6的数字编码,随机的.现在要统计这个矩阵中的斑块数量.斑块是指连在一起的同一类型的像素.一个单独的像素(

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/13 17:49:12
matlab用递归函数统计矩阵内斑块数目前,有一个30*30的矩阵,矩阵中的像素只有1~6的数字编码,随机的.现在要统计这个矩阵中的斑块数量.斑块是指连在一起的同一类型的像素.一个单独的像素(
xT[OQ+Mm7`cӤI|oAMH,R/)O*\](h+ sɿ9M37LoV|tؒ3@KvϨQb -}.!!|).IHIS *(z󡞥%+B.>1LNu+^$cWL]~M (&\QHĩ(߲3 @>omP*q_*%Hp-tQzqh^ m>DZSrA5z 1HlC )& A5LCMl@/bU }CqCp4^f.l'h&ALiĨj&PcbmD[D&妓jDbNO&*I4N:2%nO\I+m޸R%Z i<9~EP5l&S~ ?!U[5#p[1Pkp .WWN;0fXr4pv%ߒsxgϟXL#`?9<:;¢{cJpv _ [^ ̯la^ fBdb&mek 㡉SOlbQ#̌_G1`/^ >+w,oQi

matlab用递归函数统计矩阵内斑块数目前,有一个30*30的矩阵,矩阵中的像素只有1~6的数字编码,随机的.现在要统计这个矩阵中的斑块数量.斑块是指连在一起的同一类型的像素.一个单独的像素(
matlab用递归函数统计矩阵内斑块数
目前,有一个30*30的矩阵,矩阵中的像素只有1~6的数字编码,随机的.现在要统计这个矩阵中的斑块数量.斑块是指连在一起的同一类型的像素.一个单独的像素(四邻域内没有相同元素)算作一个斑块;只按对角线连接的两个或多个像素不算一个斑块,按两个斑块或多个斑块统计,即多个像素组成一个斑块必须在一个像素的四邻域内要有相同元素.需要多追加财富值的可以满足.
老师给出了一个解决方案:首先统计第一行,从第二行开始使用递推函数逐个判断,从第二行开始,每个元素的斑块归属取决于它正上方的和下一个(右边)的元素的情况,而下一个元素的情况又取决于该元素上方的和又下一个元素的情况,如此递推

matlab用递归函数统计矩阵内斑块数目前,有一个30*30的矩阵,矩阵中的像素只有1~6的数字编码,随机的.现在要统计这个矩阵中的斑块数量.斑块是指连在一起的同一类型的像素.一个单独的像素(
你这里的斑块其实就是连通域.MATLAb自带计算连通域个数的函数:bwlabel.
% 返回x中连通域个数
function n = f( x )
n = 0;
for i = unique(x)'
    [l c] = bwlabel(x==i, 4);
    n = n+c;
end
end