资源简介

采用矩阵移位相加与相减,避免了多层for循环,大大加快了程序的运行速度,而且4邻域与8邻域的权值可以调整

资源截图

代码片段和文件信息

%% 根据输入图像A,得到由A中每一个点的k邻域加权方差构成的矩阵V

function V = GetImVar(A)
[rowcol] = size(A);

V = zeros(rowcol);
alpha = 1;%边权值
times = 0.5;%边角权值比
beta = times*alpha;%角权值
%对A矩阵进行边缘延拓形成AA矩阵,其中AA矩阵周围一圈的值与A矩阵边缘相同
AA(::) = [A(11)A(1:)A(1end); A(:1)A(::)A(:end); A(end1)A(end:)A(endend)];

k = 9;%决定是采用4邻域计算还是采用9邻域计算

if(k == 4)
%计算均值U
Sum = A + AA(1:end-22:end-1) + AA(3:end2:end-1) + AA(2:end-11:end-2) + AA(2:end-13:end);
U = Sum/5;
%计算对应位置的方差,加权取平均得到V
T2 = (U-AA(1:end-22:end-1)).^2;
T8 = (U-AA(3:end2:end-1)).^2;
T4 = (U-AA(2:end-11:end-2)).^2;
T6 = (U-AA(2:end-13:end)).^2; 
T5 = (U-A).^2;
V = T5 + alpha*( 

评论

共有 条评论