paper 133:结构张量Structure Tensor(一)

1.结构张量的作用:
      能够区分图像中的平坦区域,边缘,角点;
2.图像中的结构张量的定义
   1)是一个矩阵;
   2)与图像的水平,垂直梯度有关,定义如下:
在MATLAB中,可以用如下语句求解:[Ix,Iy]=gradient(Image);
 
3)求出结构张量矩阵的行列式,和迹(矩阵对角线之和)
 行列式:K=det(E);
    迹:   H=trace(E);

 
以下代码来源于网络,注释除外
clear all;
close all;
clc;
I=imread('lena.jpg');
img=double(I);
[m,n]=size(img);

[Ix,Iy]=gradient(img);  %求出图像的梯度
Ix2=Ix.^2;
Iy2=Iy.^2;
Ixy=Ix.*Iy;

k=1;
lambda=zeros(m*n,2);   %用于存储结构张量中的行列式与迹

for i=1:m
    for j=1:n
        st=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];%结构张量
        K=det(st);  % 行列式
        H=trace(st);%求迹
        
        if H<50
            I(i,j)=255;
        end
        if H>50 &&abs(K)<0.01*10^(-9)
            I(i,j)=100;
        end
        
         if H>50 &&abs(K)>0.01*10^(-9)
            I(i,j)=50;
         end
        lambda(k,:)=[K H];
        k=k+1;
    end
end
figure;
plot(lambda(:,1),lambda(:,2),'.');
ylabel('trace');
xlabel('det');
figure;
imshow(I)

  

  

原文地址:https://www.cnblogs.com/molakejin/p/6378277.html