MATLAB与图像处理(一):图像中结构张量的求法(Structure Tensor)

来源:互联网 发布:java模拟器下载 编辑:程序博客网 时间:2024/06/01 09:57
图像中结构张量的求法(Structure Tensor)
Last Edit 2013/12/10
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;    endendfigure;plot(lambda(:,1),lambda(:,2),'.');ylabel('trace');xlabel('det');figure;imshow(I)




      


 
0 0