根据结构张量能区分图像的平坦区域、边缘区域与角点区域。

此算法也算是计算机科学最重要的32个算法之一了。链接的文章中此算法名称为Strukturtensor算法,不过我搜索了一下,Strukturtensor这个单词好像是德语,翻译过来就是structure tensor结构张量了。

此处所说的张量不是相对论或黎曼几何里的张量,黎曼几何的张量好多论文都叫张量场了。也不是数学界还没研究明白的对矩阵进行扩展的高阶张量,主要是张量分解。这里的结构张量就是一个矩阵,一个对图像像素进行组织的数据结构而已。

像素组织而成的矩阵如下:

这个公式太常见了,在harris角点检测中就用到了。其中Ix,Iy就是原对原图像在x和y方向求得的偏导。

然后求矩阵E的行列式K和迹H。然后根据K和H的关系就能区分图像的区域模式了。

模式分以下三类:

平坦区域:H=0;

边缘区域:H>0 && K=0;

角点区域:H>0 && K>0;

harris角点检测就用到了第三类判断。

当然,在实际应用的时候H和K的值肯定都不会是理想,所以我用的都是近似判断。

处理结果如下:

原图:

平坦区域:

边缘区域:

角点区域(好像也不全角点,求角点还是harris好了):

结构张量行列式与迹的关系:

其中红框为平坦区域,黄框为边缘区域,铝框为角点区域。

matlab代码如下:

clear all; close all; clc;

img=double(imread('lena.jpg'));

[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:mfor 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%认为是平坦区域

%if H>50 && abs(K)<0.01*10^(-9) %认为是边缘区域if H>50 && abs(K)>0.01*10^(-9) %认为是角点区域

img(i,j)=255;endlambda(k,:)=[K H];

k=k+1;end

endfigure;

plot(lambda(:,1),lambda(:,2),'.');

ylabel('trace');xlabel('det');

figure;

imshow(img,[])



结构张量 matlab 图像,图像的结构张量MATLAB代码相关推荐

  1. matlab 膨胀 结构元,图像形态学膨胀 结构元素

    宽度W,高度H 的图像,做膨胀操作,如果膨胀的结构元素structure element,大小为kw,kh,那么就需要做W*H*kw*kh次运算,运算量比较大. 根据图像形态学的理论,膨胀满足结合律, ...

  2. 【阿里云课程】图像翻译GAN结构与应用

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中的一节,介绍如下: 图像翻译GAN结构与应用 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生 ...

  3. ITK:对图像中的结构进行分割

    ITK:对图像中的结构进行分割 内容提要 输出结果 C++实现代码 内容提要 根据用户提供的边缘电势图对图像中的结构进行分割. 输出结果 使用的参数: 左心室:81114 5.0 1.0 -0.5 3 ...

  4. ITK:使用平面结构元素腐蚀二进制图像

    ITK:使用平面结构元素腐蚀二进制图像 内容提要 输出结果 C++实现代码 内容提要 使用平面(框)结构元素腐蚀二进制图像. 输出结果 C++实现代码 #include "itkImageF ...

  5. 单通道图像保存_3D图像展示篇结构更清晰

    3D图像展示 之前的帖子中提到了3D图像的各种采集方法,我们获取Z-Stack图像后需要选择适合图像的展示模式,让大家可以直观的了解样品结构. 3D扫描基础篇--结构更清晰 3D扫描Plus--厚样品 ...

  6. python内存结构_陈天奇:内存张量结构DLPack的PythonAPI来了

    陈天奇:内存张量结构DLPack的PythonAPI来了 新智元2021-02-28 14:25:22 [新智元导读]DLPack是一种开放的内存张量结构,用于在框架之间共享张量,近日,开发者陈天奇更 ...

  7. OpenCV中图像Mat存储格式和MATLAB中图像Mat存储格式的区别

    首先,看一下图像中的宽高与笛卡尔坐标系之间的关系如下图所示,即x与width(cols)对应,y与height(rows)对应,x是按列来进行变化,y按行变化. OpenCV读入图像以Mat形式存储时 ...

  8. matlab中的图像,MATLAB中图像的基本操作

    MATLAB中图像的基本操作 1.读取.显示图片 MATLAB中提供了immread()与imshow()函数读取和显示图片.其中读取函数imread()原型: imread: A= imread(f ...

  9. Matlab:图像数据保存

    目录: 前言 读取图像 图像的存储 前言 在下载完一些数据集的做训练的时候,发现了很多不规范的命名,因此,查询了一下图片存储以及改名的方法,学习完后,写下了本篇blog,希望大家喜欢. 读取图像 图像 ...

最新文章

  1. Web.config中连接字符串的加密和解密[转载]
  2. List与逗号分隔的字符串相互转换
  3. 极简实用的Asp.NetCore模块化框架决定免费开源了
  4. 不当败家子的原因......
  5. 一夜爆火的SLAM技术即将颠覆哪些领域
  6. 重磅 | 阿里AI labs百万美元年薪聘请两位顶级视觉科学家
  7. redis 首次请求_Redis主从复制
  8. ajax post请求发送数组后台接收
  9. Devexpress VCL Build v2014 vol 14.2.6 发布
  10. 【转】LPCTSTR,LPWSTR, PTSTR, LPTSTR区别
  11. 一条让人不安的坐地龙
  12. 主流加密方式和工具比较
  13. 在Win10下搭建web服务器,使用本机IP不能访问,但是使用localhos或127.0.0.1可以正常访问的解决办法...
  14. Json简介与基本使用
  15. java在浏览器打开word,如何直接在浏览器中打开word文档
  16. python:小鱼的航程
  17. installation of package ‘ ‘ had non-zero exit status
  18. c语言贪吃蛇大作业报告,C语言贪吃蛇实验报告
  19. 写博客的主要动力来源
  20. STM32F103C8T6读取气压计MS5611,I2C读取模式

热门文章

  1. 计算机毕业设计-基于ssm+vue的科研成果管理系统-高校科研管理系统java代码
  2. c语言与画师ai,从最简单的方式教你搞一个ai(一)
  3. 置信区间构建---商务与经济统计+深入浅出统计学
  4. 数学建模学习笔记02之席位分配问题的Hamilton方法与Matlab语言实现
  5. C#进程调度的模拟实现:模拟先来先服务调度算法、短作业优先调度算法和优先级调度算法(考虑非抢占式和抢占式),进行算法评价,输出调度结果和算法评价指标。
  6. Sqlserver2019卸载
  7. python简单实用案例_分享10个给Python小白看的实用案例,入门Python就在这里了
  8. 掌舵人离职 股价崩溃:Nutanix怎么了?
  9. 机器学习:手写数字识别(Hand-written digits recognition)小项目
  10. 解决Taro微信小程序没有FromData