当前位置: 首页 > news >正文

多相机depth-rgb图组完整性分拣器_MATLAB实现

文件夹中数据规则为,一张BMP格式的RGB图像会有一张同名的raw格式的深度图,一共有三个相机,三个相机的数据为一组,例如:1_0.bmp,1_0.raw,1_1.bmp,1_1.raw,1_2.bmp,1_2.raw为一组相机的数据。现在文件夹中数据存在缺失情况,可能缺失某个相机的raw格式的深度。使用matlab代码筛选文件夹中的数据,将一组数据中存在缺少raw格式的这组数据放在一个文件夹,不存在确实的六个数据统一放在一个文件夹。

分析:
MATLAB 脚本用于把“成组”数据分成两类:

  1. 六个文件齐全(3 个 .bmp + 3 个 .raw);
  2. 缺失任一 .raw 的整组数据(其余文件也一起搬走)。

脚本假设所有文件都在当前工作目录下,并按如下命名规则:
{组号}_{相机号}.bmp{组号}_{相机号}.raw,相机号固定为 0/1/2。

%%
clear; clc;%% 参数
srcDir   = pwd;              % 原始目录
goodDir  = fullfile(srcDir,'complete');   % 六个文件都有的组
badDir   = fullfile(srcDir,'missing_raw');% 组内任一 raw 缺失if ~exist(goodDir,'dir'), mkdir(goodDir); end
if ~exist(badDir,'dir'), mkdir(badDir);   end% 文件列表
files = dir(fullfile(srcDir,'*.*'));
names = {files.name};
isBMP = endsWith(names, '.bmp', 'IgnoreCase', true);
isRAW = endsWith(names, '.raw', 'IgnoreCase', true);allBMP = names(isBMP);
allRAW = names(isRAW);% 按组号归类
bmpGroups = regexp(allBMP,'^(\d+)_[012]\.bmp$','tokens','once');
rawGroups = regexp(allRAW,'^(\d+)_[012]\.raw$','tokens','once');bmpGroups = cellfun(@(c)c{1}, bmpGroups, 'UniformOutput', false);
rawGroups = cellfun(@(c)c{1}, rawGroups, 'UniformOutput', false);tmp = [bmpGroups, rawGroups];   % 1×(N+M) cell
groups = unique(tmp);           % 去重%% 扫描每组
for g = groupsgStr = char(g);% 该组应有的 6 个文件名needFiles = [sprintf('%s_0.bmp',gStr);sprintf('%s_1.bmp',gStr);sprintf('%s_2.bmp',gStr);sprintf('%s_0.raw',gStr);sprintf('%s_1.raw',gStr);sprintf('%s_2.raw',gStr)];% 实际存在的 6 个文件existFlag = ismember(needFiles, names);% 判断 raw 是否完整rawExist  = existFlag(4:6);if all(rawExist)% 六个文件都在 → completetgt = goodDir;else% 任一 raw 缺失 → missing_rawtgt = badDir;endneedFiles = strcat(gStr, {'_0.bmp','_1.bmp','_2.bmp', ...'_0.raw','_1.raw','_2.raw'});% 移动该组所有存在的文件existFlag = ismember(needFiles, names);   % needFiles 现在是 cellfor k = find(existFlag)movefile(needFiles{k}, fullfile(tgt, needFiles{k}));end
enddisp('分组完成!');

使用方法

  1. 将脚本保存为 classifyGroups.m,放在数据根目录。
  2. 运行 classifyGroups,脚本会自动创建 completemissing_raw 两个子文件夹并把相应文件移入。

实现效果
在这里插入图片描述

http://www.lryc.cn/news/589333.html

相关文章:

  • 魔搭官方教程【快速开始】-swift 微调报错:`if v not in ALL_PARALLEL_STYLES`
  • 线上项目-升级redis8.0.3遇到的错
  • iOS高级开发工程师面试——关于网络
  • el-tooltip 快速滚动的时候出现残影如何解决 vue3
  • 学习嵌入式的第二十八天-数据结构-(2025.7.15)进程和线程
  • 20250715武汉xx公司面试一面
  • [AI-video] Web UI | Streamlit(py to web) | 应用配置config.toml
  • 索尼(SONY)摄像机mp4文件删除覆盖的恢复方法
  • 如何选择影视会员api接口?
  • 【字节跳动】数据挖掘面试题0019:带货直播间推荐:现在有一个带货的直播间,怎么把它精准地推送给有需要的用户
  • Flutter 入门指南:从基础到实战
  • 劳务派遣vs劳务外包:HR必懂的区别
  • 场景设计题+智力题
  • 《星盘接口9:永恒之门》
  • flutter下的webview适配rem问题
  • easy-springdoc
  • 手撕线程池详解(C语言源码+解析)
  • 35.KMP 算法
  • 分发糖果-leetcode
  • Python 字典 (Dictionary) 详解
  • JavaScript进阶篇——第三章 箭头函数核心
  • RabbitMQ第三章(企业级MQ应用方案)
  • AI大模型应用架构演进:从LLM基础到Agent协作的范式转移
  • 【SOA用于噪声抑制】光纤DFB激光器中弛豫振荡噪声抑制
  • IPsec:网络层的加密盾牌与HTTPS的差异解析
  • JVM——有哪些常见的垃圾收集器
  • C++中list各种基本接口的模拟实现
  • 022_提示缓存与性能优化
  • Altium Designer(AD)25软件下载及安装教程(7.9)
  • 蓝牙信号强度(RSSI)与链路质量(LQI)的测量与应用:面试高频考点与真题解析