结构张量 matlab 图像,图像处理中 结构张量(structure tensor)
結(jié)構(gòu)張量(structure tensor)?主要用于區(qū)分圖像的平坦區(qū)域、邊緣區(qū)域與角點區(qū)域。blog
此處的張量就是一個關(guān)于圖像的結(jié)構(gòu)矩陣,矩陣結(jié)構(gòu)構(gòu)成以下:class
Rx,Ry分別為圖像的水平與垂直梯度,然后進行求矩陣T的行列式K與跡(trace)H。lambda
根據(jù)K與H的關(guān)系來求得區(qū)分圖像的平坦、邊緣與角點區(qū)域:方法
平坦區(qū)域:H=0;im
邊緣區(qū)域:H>0 && K=0;img
角點區(qū)域:H>0 && K>0;di
該方法實際應(yīng)用實例以下:matlab
原圖:? ??co
邊緣區(qū)域:ps
邊緣區(qū)域中 行列式與跡的關(guān)系圖:
matlab實現(xiàn)代碼以下:
clc;
clear;
img=double(imread('F:\Users\Revere\Pictures\CameraRoll\imgwork\smile.png'));
[m n]=size(img);
imshow(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)]; %結(jié)構(gòu)張量
K=det(st);
H=trace(st); %求跡
%全部判斷都是近似的
% if H<50 %認為是平坦區(qū)域
if H>50 && abs(K)<0.01*10^(-9) %認為是邊緣區(qū)域
% if H>50 && abs(K)>0.01*10^(-9) %認為是角點區(qū)域
img(i,j)=255;
end
lambda(k,:)=[K,H];
k=k+1;
end
end
figure;
plot(lambda(:,1),lambda(:,2),'.');
ylabel('trace');
xlabel('det');
figure;
imshow(img,[]);
總結(jié)
以上是生活随笔為你收集整理的结构张量 matlab 图像,图像处理中 结构张量(structure tensor)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学书籍推荐
- 下一篇: 基于布谷鸟灰狼算法、灰狼算法求解复杂地形