DL1=160;
DL2=80;
%预设三个向量方向,即纹理方向
V1x=sin(pi/4);V1y=cos(pi/4); %45度
V2x=sin(0);V2y=cos(0); %0度
V3x=sin(pi*3/4);V3y=cos(pi*3/4); %135度
f2=double(img0);
f3=zeros(m,n,3);
for x=1:m;
for y=1:n;
if f2(x,y)>DL1
% f3(x,y,1)=f2(x,y)+1; %设置显示颜色Red,下同
%f3(x,y,2)=0;
%f3(x,y,3)=0;
v(x,y,1)=V1x; %设置向量场方向,即纹理方向
v(x,y,2)=V1y;
else
if f2(x,y)>DL2
% f3(x,y,1)=0;
%f3(x,y,2)=f2(x,y)+1;
%f3(x,y,3)=0;
v(x,y,1)=V2x;
v(x,y,2)=V2y;
else
%f3(x,y,1)=0;
%f3(x,y,2)=0;
%f3(x,y,3)=f2(x,y)+1;
v(x,y,1)=V3x;
v(x,y,2)=V3y;
end
end
end
end
%imshow(f3);
%f3=f3./256; %
subplot(111);imshow(f2);
% 全场单一方向纹理
% v=ones(m,n,2);
%计算线性积分卷积
w=10; %积分长度,即纹理长度
dt=1; %间隔
M0=img3; %白噪声图
T_list = 0:dt:w/2;
H = myLIC(v, dt, T_list );
T_list(1)=[];
H1 = myLIC(-v, dt, T_list );
H = cat(4, H1(:,:,:,end:-1:1), H );
p = size(H,4);
%计算平均值
M = zeros(m,n);
[Y,X] = meshgrid(1:m,1:n);
W = zeros(n);
for i=1:p
A = interp2(1:n,1:m, M0, H(:,:,2,i), H(:,:,1,i) );
w = ones(m,n);
M = M + A.*w;
end
img4=M./p;
%subplot(111);imshow(uint8(img4));title('LIC处理结果')
就是这样的图片得到向量场显示
1、变量img0和img3未定义,猜测应该是灰度图像数据。
2、变量m、n未定义,猜测是img0的行列数。
3、函数myLIC未定义,需要题主提供。
追问我这是用matlab做的 发你youxiang可以不