【Matlab案例】imageJ + matlab 实现物体轨迹追踪及路径彩色上色

我们经常看到一些文献中对细胞或者粒子的运动轨迹进行上色,不同的颜色对应着不同的时间。一纯色的轨迹实现起来很方便,彩色的轨迹如何实现呢?本文使用imageJ获取轨迹数据,使用matlab对轨迹进行上色。结果如下:
在这里插入图片描述

1. imageJ 导入图像

导入视频,本案例使用的.mp4格式视频。需要安装一个插件,FFmpeg。
打开imageJ,找到更新页面(Help->Update…)
在这里插入图片描述
点击 Manage Update Sites
在这里插入图片描述
找到FFMPEG插件,并勾选,然后点击App and Close
在这里插入图片描述
最后点击Apply Changes
在这里插入图片描述
等待安装完成并重启软件后,就能找到插件了
在这里插入图片描述
点击Movie(FFMPEG),将自己的.mp4文件进行导入。
在这里插入图片描述注意需要取消勾选Use virtual stack,否则会报错。
在这里插入图片描述

2. imageJ轨迹追踪

2.1 手动轨迹追踪

点击Plugins->Tracking->Manual Tracking,进行手动轨迹追踪
在这里插入图片描述
根据自己视频需求,设置相关参数。如果只进行轨迹追踪,不需要特殊设置。然后点击Add track
在这里插入图片描述使用鼠标左键点击你关注的物体或者粒子,就能够得到每一帧图片中这个物体在整个图像中的X Y坐标,这些X Y坐标序列就是该物体的轨迹。后续我们将使用这些轨迹在Matlab中进行上色。
在这里插入图片描述
当完整所有帧中的轨迹点选,就会出现一条轨迹曲线。本文仅单个物体的轨迹追踪为例,如果需要同时追踪多个物体,需要再次点击Add track,然后重新从第一帧开始点取。
在这里插入图片描述
我们将得到数据保存下载,之后导入matlab中
在这里插入图片描述

2.2 自动轨迹追踪

随后添加

3. 在Maltab中为轨迹上色

首先读取图像数据以及 ImageJ导出的数据

clear all
clc
%% 读取数据
% 读取视频文件
videoFile = '示例视频.mp4';
video = VideoReader(videoFile);% 创建一个视频写入对象,用于保存带有轨迹的视频
outputVideoFile = 'OutPut-示例视频.mp4';
outputVideo = VideoWriter(outputVideoFile, 'MPEG-4');
open(outputVideo);% 读取CSV文件
data = readtable('data.csv');
% 获取x和y坐标数据,假设第一列是x坐标,第二列是y坐标
x = data{:, 3};
y = data{:, 4};
SliceN=data{:, 2};
trackNum=length(SliceN);

创建窗口用于实时显示绘制过程,可以修改colors来改变轨迹的映射颜色,也可以修改轨迹粗细

%%
% 创建一个图形窗口用于显示视频
hFig = figure;% 获取jet颜色映射
cmap = jet;
% 归一化数据到[0, 1]
dataNormalized = (SliceN - min(SliceN)) / (max(SliceN) - min(SliceN));
% 使用round来确保索引是整数
colorIdx = round(dataNormalized * (size(cmap, 1) - 1)) + 1;
% 获取对应的颜色
colors = cmap(colorIdx, :);
% 轨迹粗细
lineWidth = 6;  % 可以设置为您需要的值
% 轨迹点大小
markerSize = lineWidth * 3;  % 确保点足够大以覆盖线段之间的间隙

对每一帧进行轨迹与图像叠加

while hasFrame(video)% 读取一帧frame = readFrame(video);% 在当前帧上绘制轨迹imshow(frame);hold on;  % 保持当前帧的图像,以便在上面绘制轨迹% 获取当前帧号frameNumber = video.CurrentTime * video.FrameRate;% 限制轨迹到当前帧号currentX = x(SliceN <= frameNumber);currentY = y(SliceN <= frameNumber);% 在帧上添加轨迹for k = 1:length(currentX)-1% 绘制点以覆盖线段间的间隙plot(currentX(k), currentY(k), '.', 'MarkerSize', markerSize, 'Color', colors(k, :));line([currentX(k) currentX(k+1)], [currentY(k) currentY(k+1)], 'Color', colors(k, :), 'LineWidth', lineWidth,'LineJoin','round');endhold off; % 结束绘图,以便下一帧可以重新开始绘制% 将带轨迹的帧写入输出视频frameWithPath = getframe(gca);writeVideo(outputVideo, frameWithPath.cdata);% 播放视频drawnow;
end% 关闭视频写入对象
close(outputVideo);% 关闭图形窗口
close(hFig);% 打开带轨迹的视频
implay(outputVideoFile);

轨迹上色结果如下。因为CSDN上传文件大小限制,所以颜色会失真,实际效果很好。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酒店新科技,飞睿智能毫米波雷达人体存在感应器,智能照明创新节能新风尚

在这个日新月异的时代&#xff0c;科技正以未有的速度改变着我们的生活。从智能手机到智能家居&#xff0c;每一个细微之处都渗透着科技的魅力。而今&#xff0c;这股科技浪潮已经席卷到了酒店行业&#xff0c;为传统的住宿体验带来了翻天覆地的变化。其中&#xff0c;引人注目…

Linux驱动开发(速记版)--设备树

第五十二章 初识设备树 52.1 设备树介绍 设备树&#xff08;Device Tree&#xff09;是嵌入式系统和Linux内核中用于描述硬件的一种机制。 设备树概述 目的&#xff1a;描述硬件设备的特性、连接关系和配置信息。 优势&#xff1a;与平台无关&#xff0c;提高系统可移植性和可…

外贸网站怎么搭建对谷歌seo比较好?

外贸网站怎么搭建对谷歌seo比较好&#xff1f;搭建一个网站自然不复杂&#xff0c;但要想搭建一个符合谷歌seo规范的网站&#xff0c;那就要多注意了&#xff0c;你的网站做的再酷炫&#xff0c;再花里胡哨&#xff0c;但如果页面都是js代码&#xff0c;或者页面没有源代码内容…

相机基础概念

景深&#xff1a; 景深的定义 DOF:depth of filed 是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。光圈、镜头、及焦平面到拍摄物的距离是影响景深的重要因素。定义3&#xff1a;在镜头前方&#xff08;焦点的前、后&#xff09;有一…

【RISCV指令集手册】向量扩展v1.0

概述 从rvv 0.9说起 此前写过向量扩展0.9的阅读记录&#xff0c;三年已过&#xff0c;本以为不再参与RVV的相关开发&#xff0c;奈何造化弄人&#xff0c;旧业重操&#xff0c;真就世事难料呀。 总的来说1.0版本相比0.9版本的扩充了较多内容&#xff0c;但大部分为指令功能的…

Qt中使用QPainter绘制阴影

困扰了很久的问题&#xff0c;今天终于明白了如何绘制QGraphicDropShadowEffect同样效果的阴影&#xff0c;故写下这篇文章分享给大家。其方法是复制Qt源代码中QGraphicDropShadowEffect绘制实现的核心代码然后稍作修改实现&#xff0c;先看效果和封装过后的源代码&#xff1a;…

深度探索Kali Linux的精髓与实践应用

Kali Linux简介 Kali Linux作为全球网络安全领域的首选操作系统之一&#xff0c;其强大的功能性及广泛的适用范围令人瞩目。除了上述基础介绍外&#xff0c;让我们深入探究Kali Linux的几个关键特性及其在实际操作中的具体应用案例。 Kali工具集成&#xff1a;全面的安全工具…

计算机视觉——图像修复综述篇

目录 1. Deterministic Image Inpainting 判别器图像修复 1.1. sigle-shot framework (1) Generators (2) training objects / Loss Functions 1.2. two-stage framework 2. Stochastic Image Inpainting 随机图像修复 2.1. VAE-based methods 2.2. GAN-based methods …

【C++】“list”的介绍和常用接口的模拟实现

【C】“list”的介绍和常用接口的模拟实现 一. list的介绍1. list常见的重要接口2. list的迭代器失效 二. list常用接口的模拟实现&#xff08;含注释&#xff09;三. list与vector的对比 一. list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xf…

国庆普及模拟赛-5

题目链接&#xff1a; file:///C:/Users/Administrator/Desktop/%E4%B8%8B%E5%8F%91%E6%96%87%E4%BB%B61005/20241005.pdf T1&#xff1a; 题目分析&#xff1a;不需要进行模拟&#xff0c;想要获得分数最大化&#xff0c;只需要将大的数据相加&#xff0c;再减去小的数据。 …

C语言进阶版第16课—自定义类型:结构体

文章目录 1. 结构体类型的声明和初始化2. 结构体自引用3. 结构体内存对齐3.1 结构体内存对齐规则3.2 修改默认对齐数 4. 结构体传参4. 结构体实现位段5. 位段使用的注意事项 1. 结构体类型的声明和初始化 结构体在使用之前都要对其类型进行声明&#xff0c;关键字是struct&…

Pandas -----------------------基础知识(主要matplotlib知识)(七)

Dataframe变形 转置 T import pandas as pddata {2022: [10, 30, 15, 20], 2023: [40, 50, 36, 21]} df1 pd.DataFrame(data, index[q1, q2, q3, q4]) print("原始数据框&#xff1a;") print(df1)df2 df1.Tprint("转换后数据框&#xff1a;") print(df…

计算机视觉算法知识详解(含代码示例)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

FRP搭建内网穿透:云服务端 + 家用Linux/Windows主机【2024】

介绍 FRP是一个可以自己搭建内网穿透服务的开源项目&#xff0c;开源地址直达&#xff1a; FRP-GitHub 实际上frp由两个程序组成 ①frps:在服务端运行的程序 ②frpc:在客户端运行的程序 运作方式示意图如下 服务端 因为服务上使用了1Panel面板&#xff0c;直接在应用商店安…

【算法系列-链表】删除链表的倒数第N个结点

【算法系列-链表】删除链表的倒数第N个结点 文章目录 【算法系列-链表】删除链表的倒数第N个结点1. 算法分析&#x1f6f8;2. 模拟解决问题2.1 思路分析&#x1f3af;2.2 代码示例&#x1f330; 3. 双指针(快慢指针)解决问题3.1 思路分析&#x1f3af;3.2 代码示例&#x1f330…

软件验证与确认实验二-单元测试

目录 1. 实验目的及要求.................................................................................................... 3 2. 实验软硬件环境.................................................................................................... 3 …

进阶岛第4关:InternVL 多模态模型部署微调实践

准备InternVL模型 我们使用InternVL2-2B模型。该模型已在share文件夹下挂载好&#xff0c;现在让我们把移动出来。 mkdir -p /root/project/joke/modelcp -r /root/share/new_models/OpenGVLab/InternVL2-2B /root/project/joke/model # 不用ln -s 准备环境 这里我们来手动配…

Brave编译指南2024 MacOS篇-构建与运行(六)

引言 在上一篇文章中&#xff0c;我们成功初始化了Brave浏览器的构建环境。现在&#xff0c;我们进入了这个编译指南的核心部分&#xff1a;实际构建Brave浏览器并运行它。这个过程将把我们之前准备的所有源代码和依赖项转化为一个可运行的浏览器实例。 1. 编译Brave浏览器 …

【进阶OpenCV】 (5)--指纹验证

文章目录 指纹验证1. 验证原理2. 读取图片3. 计算特征匹配点 总结 指纹验证 指纹验证基于人类指纹的独特性和稳定性。每个人的指纹在图案、断点和交叉点上各不相同&#xff0c;这种唯一性和终生不变性使得指纹成为身份验证的可靠手段。指纹识别技术通过采集和分析指纹图像&…

docker 部署nacos

目录 一、拉取镜像 二、部署 三、访问&#xff08;默认是用内嵌数据库&#xff09; 四、配置 五、重启容器 一、拉取镜像 docker pull nacos/nacos-server 二、部署 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --restartalways --privilegedt…