【图像分割和识别】活动形状模型 (ASM) 和活动外观模型 (AAM)(Matlab代码实现)

news2024/12/22 22:46:00

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

提出了一种主动形状模型分割方案,该方案由最优局部特征引导,与原始公式中的归一阶导数轮廓相反[Cootes and Taylor, 1995, 1999, and 2001]。使用非线性 kNN 分类器代替线性马氏距离来查找地标的最佳位移。对于描述形状的每个地标,在分割优化过程中考虑的每个分辨率级别上,将确定一组不同的最佳特征。特征的选择是自动的,使用训练图像和顺序特征向前和向后选择。新方法在合成数据和四个医学分割任务中进行了测试:在包含230张胸片的数据库中分割左右肺野,并在MRI脑图像的90个切片数据库中分割小脑和胼胝体。在所有情况下,新方法在重叠误差测量(使用配对 T 检验时为 p<0.001)方面产生的结果明显优于原始活动形状模型方案。 

这是Cootes和Taylor引入的基本活动形状模型(ASM)和活动外观模型(AAM)的一个例子,具有多分辨率方法,彩色图像支持和改进的边缘查找方法的2D和3D。对于生物医学对象的自动分割和识别非常有用。
.

基本思想 ASM:
ASM 模型是根据训练图像中手动绘制的轮廓(3D 表面)训练的。ASM 模型使用主成分分析 (PCA) 查找训练数据中的主要变化,这使模型能够自动识别轮廓是否为可能/良好的对象轮廓。此外,ASM模式还包含描述垂直于控制点的线纹理的矩阵,这些矩阵用于校正搜索步骤中的位置。

创建 ASM 模型后,通过查找控制点的最佳纹理匹配来变形初始轮廓。这是一个迭代过程,其中控制点的移动受到 ASM 模型从训练数据中识别为“正常”对象轮廓的限制。
.

基本思想AAM:
PCA用于查找训练数据的平均形状和平均形状的主要变化。找到形状模型后,所有训练数据对象都变形为主形状,并将像素转换为矢量。然后使用 PCA 来查找训练集中的平均外观(强度)和外观方差。
形状和外观模型都与 PCA 合并为一个 AAM 模型。
通过用已知量替换训练集中的参数,可以创建一个模型,该模型针对模型强度和正常图像强度的一定差异提供最佳参数更新。此模型用于搜索阶段。

参考文献:

- Ginneken B. et al. “Active Shape Model Segmentation with Optimal Features”, IEEE Transactions on Medical Imaging 2002.
- T.F. Cootes, G.J Edwards, and C,J. Taylor“Active Appearance Models”, Proc. European Conference on Computer Vision 1998
- T.F. Cootes, G.J Edwards, and C,J. Taylor “Active Appearance Models”, IEEE Transactions on Pattern Analysis and Machine Intelligence 2001

📚2 运行结果

 

 

 

 部分代码:

%Add functions path to matlab search path
functionname='AAM_2D_example.m'; functiondir=which(functionname);
functiondir=functiondir(1:end-length(functionname));
addpath([functiondir 'AAM Functions'])
addpath([functiondir 'Functions'])
addpath([functiondir 'PieceWiseLinearWarp_version2'])
addpath([functiondir 'PieceWiseLinearWarp_version2/functions'])


% Try to compile c-files
cd([functiondir 'PieceWiseLinearWarp_version2/functions'])
try
    mex('warp_triangle_double.c','image_interpolation.c');
catch ME
    disp('compile c-files failed: example will be slow');
end
cd(functiondir);

%% Set options
% Number of contour points interpolated between the major landmarks.
options.ni=20;
% Set normal appearance/contour, limit to +- m*sqrt( eigenvalue )
options.m=3;
% Size of appearance texture as amount of orignal image
options.texturesize=1;
% If verbose is true all debug images will be shown.
options.verbose=true;
% Number of image scales
options.nscales=4;
% Number of search itterations
options.nsearch=15;

%% Load training data
% First Load the Hand Training DataSets (Contour and Image)
% The LoadDataSetNiceContour, not only reads the contour points, but
% also resamples them to get a nice uniform spacing, between the important
% landmark contour points.
TrainingData=struct;
for i=1:10
    is=num2str(i); number = '000'; number(end-length(is)+1:end)=is;
    filename=['Fotos/train' number '.mat'];
    [TrainingData(i).Vertices, TrainingData(i).Lines]=LoadDataSetNiceContour(filename,options.ni,options.verbose);
    filename=['Fotos/train' number '.jpg'];
    
    I=im2double(imread(filename));
    
    if(options.verbose)
        Vertices=TrainingData(i).Vertices;
        Lines=TrainingData(i).Lines;
        t=mod(i-1,4); if(t==0), figure; end
        subplot(2,2,t+1), imshow(I); hold on;
        P1=Vertices(Lines(:,1),:); P2=Vertices(Lines(:,2),:);
        plot([P1(:,2) P2(:,2)]',[P1(:,1) P2(:,1)]','b');
        drawnow;
    end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

- Ginneken B. et al. “Active Shape Model Segmentation with Optimal Features”, IEEE Transactions on Medical Imaging 2002.
- T.F. Cootes, G.J Edwards, and C,J. Taylor“Active Appearance Models”, Proc. European Conference on Computer Vision 1998
- T.F. Cootes, G.J Edwards, and C,J. Taylor “Active Appearance Models”, IEEE Transactions on Pattern Analysis and Machine Intelligence 2001

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL常用命令1

文章目录 SQL分类DDL数据库数据库中的表 DMLDQLDCL函数约束多表查询多表关系多表查询概述内连接外连接自连接联合查询子查询标量子查询列子查询行子查询表子查询 多表查询案例 事务事务简介事务操作事务隔离级别 SQL分类 DDL 数据库 查询所有数据库 show databases;查询当前…

Android 四大布局使用详解

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、LinearLayout 线性布局二、RelativeLayout 关系布局三、FrameLayout 帧布局四、TableLayout 表格布局 在Android 中&#xff0c;有界面存在的地方就…

Linux 调试进阶(多场景覆盖)

1. 背景 最近在小米项目中分析较多crash问题&#xff0c;结合之前在《程序员的自我修养——链接&#xff0c;状态与库》书中学到的一点皮毛。感触颇深&#xff0c;总结了一些经验&#xff0c;相信对大家分析相关问题有一定的帮助。因为本文的知识点偏于底层&#xff0c;大部分…

前端面试题-js(三)

31 介绍js有哪些内置对象 Object 是 JavaScript 中所有对象的⽗对象数据封装类对象&#xff1a; Object 、 Array 、 Boolean 、 Number 和 String其他对象&#xff1a; Function 、 Arguments 、 Math 、 Date 、 RegExp 、 Error 32 说⼏条写JavaScript的基本规范 不要在同…

【算法集训之线性表篇】Day 09

文章目录 题目基本设计思想代码实现效果 题目 定义三元组(a,b,c)(a,b,c均为整数)的距离D|a-b||b-c||c-a|。给定3个非空集合S1&#xff0c;S2&#xff0c;S3&#xff0c;按升序分别存储在三个数组中。请设计一个尽可能高效的算法&#xff0c;计算并输出所有有可能的三元组中的最…

TabView, DarkMode 的使用

1. TabView 选项卡视图的使用 1.1 实现 /// 选项卡视图 struct TabViewBootcamp: View {State var selectedTab: Int 0let icons: [String] ["heart.fill", "globe", "house.fill", "person.fill"]var body: some View {// tabView…

青岛大学_王卓老师【数据结构与算法】Week05_11_栈与递归_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c; 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础…

考虑设备动作损耗的配电网分布式电压无功优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Nginx】proxy_set_header的变量与X-Forwarded-For伪造客户端IP漏洞

前言 上面突然说&#xff0c;需要检查Nginx反向代理的安全问题并给出了修改方法&#xff0c;小白的我一脸懵逼&#xff0c;明明都是中文&#xff0c;连在一起咋就看不明白了。于是乎&#xff0c;对着修改内容简单学习了一下&#xff0c;在此做个记录&#xff0c;如有问题请大佬…

【Ubuntu】Ubuntu14 安装 open-jdk-1.7(open-jdk-7) 最新 持续更新中

【Ubuntu】Ubuntu14 安装 open-jdk-1.7&#xff08;open-jdk-7&#xff09; 最新 持续更新中 一、概述二、特别说明三、开发环境四、安装 open-jdk-1.7五、配置环境1、配置环境变量路径2、环境变量3、完成安装 一、概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。…

Hive3.1.2伪分布式安装

Hive3.1.2安装 前言 Hive是何物&#xff0c;自己去百度&#xff0c;在此不多bb&#xff0c;直接开整… 学习一个组件&#xff0c;个人觉得最重要的是先学会安装再说&#xff0c;巧妇难为无米之炊撒… 下载 下载地址&#xff1a;https://downloads.apache.org/hive/hive-3.…

Python探索金融数据进行时间序列分析和预测

大家好&#xff0c;时间序列分析是一种基于历史数据和趋势分析进行预测的统计技术。它在金融和经济领域非常普遍&#xff0c;因为它可以准确预测趋势并做出明智的决策。本文将使用Python来探索经济和金融数据&#xff0c;执行统计分析&#xff0c;并创建时间序列预测。 我们将…

面试题更新之-CSS Hack是什么?ie6,7,8的hack分别是什么?

文章目录 导文CSS Hack的定义广泛应用的CSS Hack技巧ie6,7,8的hack分别是什么&#xff1f; 导文 面试题更新之-CSS Hack是什么?ie6,7,8的hack分别是什么&#xff1f; CSS Hack的定义 CSS Hack指的是在CSS中使用一些特定的代码或技巧&#xff0c;通过利用不同浏览器对CSS实现的…

大学生用一周时间给麦当劳做了个App(安卓版)

背景 有个大学生粉丝最近私信联系我&#xff0c;说基于我之前开源的多语言项目做了个仿麦当劳的项目&#xff0c;虽然只是个样子货&#xff0c;但是收获颇多&#xff0c;希望把自己写的代码开源出来供大家一起学习进度。这个小伙伴确实是非常积极上进&#xff0c;很多大学生&a…

Grid++Report 6.8.6 Crack

GridReport报表开发工具总体介绍 报表开发工具概述 GridReport是一款同时支持C/S软件(桌面程序)与B/S软件(WEB程序)开发的报表工具&#xff0c;功能全面易学易用。C/S开发适用于VB.NET、C#、VB、VC、Delphi、CBuilder、QT与易语言等。B/S开发适用于ASP.NET(C# & VB.NET),…

蒲公英打包环境搭建碰到问题

一&#xff1a;证书那边选择手动&#xff0c;不要自动&#xff0c;——》debug配置dev证书&#xff0c;release配置ad-hoc证书 二&#xff1a;证书有时候不生效&#xff0c;删除重新下载。~/Library/MobileDevice/Provisioning Profiles 三&#xff1a;更新测试手机时&#…

数字化孪生技术在工业上的应用场景和案例分享

编者按&#xff1a;数字化孪生是一个完整的生命周期概念&#xff0c;它从设计和制造开始&#xff0c;贯穿整个生产过程&#xff0c;直到产品退役。数字化孪生将现实世界和虚拟世界相结合&#xff0c;使企业能够更好地理解和优化物理系统的运行情况&#xff0c;从而提高生产效率…

Java多线程下的单例模式参考

Java多线程下的单例模式参考 单例有多种的写法&#xff0c;本例是懒汉式单例的一种写法。在高并发环境下需要注意的是&#xff1a; 1.单例在并发访问并调用其相应的getInstance方法的时候也会造成创建多个实例对象&#xff0c;加锁是必要的。 2.使用synchronized是比较好的解…

基于预测控制模型的自适应巡航控制仿真与机器人实现(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 自适应巡航控制技术为目前由于汽车保有量不断增长而带来的行车安全、驾驶舒适性及交通拥堵等问题提供了一条有效的解决途径&am…

JS、Vue鼠标拖拽

JS代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevic…