wei.lw.li
|
85045d45e2
|
fix(processors): 修复对比度与阈值算子16位分支的降位精度损失
- ContrastProcessor: CLAHE分支改用原生CvInvoke.CLAHE(支持CV_16U),不再16→8→16往返
- ThresholdProcessor: Otsu分支在16位完整直方图(65536 bin)上原生计算最优阈值
|
2026-07-21 10:05:13 +08:00 |
|
wei.lw.li
|
87cd56b87e
|
refactor(processors): 图像增强算子改造为原生16位泛型实现
消除8位适配器16→8→16往返的精度损失,全程float域运算:
- HDREnhancementProcessor: 4种色调映射按位深归一化,保留暗部/亮部细节
- RetinexProcessor: SSR/MSR/MSRCR对数域运算保精度
- HierarchicalEnhancementProcessor: 多尺度高斯分解改在float域进行
- ColorLayerProcessor: 分层阈值与直方图按完整位深(16位65536 bin)计算
- EmbossProcessor: 浮雕卷积float域,灰度偏移按位深缩放
|
2026-07-21 10:04:13 +08:00 |
|
wei.lw.li
|
00c3c80481
|
feat(processors): 直方图均衡化算子改造为原生16位泛型实现
- 类改为 HistogramEqualizationProcessor<TDepth> 泛型,自动被发现机制识别为原生16位算子
- 全局均衡化16位模式:在65536 bin上直接做CDF映射,消除8位往返导致的梳状间隔放大
- CLAHE模式:改用OpenCV原生CvInvoke.CLAHE,原生支持CV_16UC1,无需降位
- 8位行为保持不变,算子键名兼容旧recipe
|
2026-07-21 09:28:10 +08:00 |
|
wei.lw.li
|
d025c8922b
|
fix(viewport): 修复流水线处理16位图像后直方图退化为0-255的问题
- PipelinePreviewUpdatedPayload 新增 ResultImage16 字段携带16位结果图
- MainViewportService 增加 CurrentHistogramSource16 配对属性,引用配对防止过期数据
- SetManualImage/SetLiveProcessedImage 增加16位伴随图重载
- ViewportPanelViewModel 暴露 HistogramSource16 并在状态同步时更新
- ViewportPanelView 直方图刷新优先使用16位配对源统计全动态范围
|
2026-07-21 09:27:49 +08:00 |
|
wei.lw.li
|
e39ca8c2b3
|
feat(UI): 增强/锐化按钮支持Toggle切换与撤销,添加激活状态样式指示器
|
2026-07-20 17:31:50 +08:00 |
|
wei.lw.li
|
8095a98752
|
feat(ImageProcessing): 锐化算法升级为16位处理管线,新增ToBitmapSource16支持Gray16输出
|
2026-07-20 17:31:46 +08:00 |
|
wei.lw.li
|
4667602400
|
fix: 测量工具手柄/顶点大小改为线条粗细的2倍
新增GetHandleSize() = GetAdaptiveThickness() × 2 统一自适应计算
CreateMDot/CreateAxisHandle/FootDot 从硬编码Width=2改为GetHandleSize()
移除BGA EdgeDot的硬编码2x2覆盖
图像<1000px: 2x2, 1500-2000px: 4x4, 3000px+: 6x6
|
2026-07-20 16:08:33 +08:00 |
|
wei.lw.li
|
34f3eb78ce
|
fix: 修复图像处理算子内存泄漏和健壮性问题
ContrastProcessor: 修复AutoContrastStretch中floatImage重新赋值导致的内存泄漏, 修复线性模式brightness调整时result+覆盖中间图像泄漏
MorphologyProcessor: switch添加default分支防止未处理的结构元素类型
MultiplicationProcessor/BilateralFilterProcessor/PixelDepthHelper: 相关16位处理优化
|
2026-07-20 15:45:33 +08:00 |
|
wei.lw.li
|
c218209ce3
|
feat: 16位图像流水线处理及保存功能
PipelineExecutionService: 新增16位处理链路ExecutePipelineAsync16, 返回ResultImage16字段
PipelineEditorViewModel: 新增ResultImage16属性, 支持16位结果存储
MainViewportService: 新增LatestResultImage16属性
ViewportPanelView.xaml.cs: 新增16位TIFF保存功能(Save16BitTiffToFile)
|
2026-07-20 15:45:19 +08:00 |
|
wei.lw.li
|
6e07e255b6
|
fix: 修复InspectionMarkOverlay拦截下层鼠标事件导致测量工具无法拖拽
问题:InspectionMarkOverlay以z-index=20000覆盖在mainCanvas最上层,Background=Transparent+IsHitTestVisible=true全区域命中鼠标测试,导致注册在_measureOverlay子元素上的测量拖拽处理器永远收不到事件
修复:默认状态Background=null, IsHitTestVisible=false;仅当ActiveTool!=None时启用命中测试和透明背景
|
2026-07-20 15:45:07 +08:00 |
|
wei.lw.li
|
90bff74caf
|
fix: 修复16位TIFF图像加载时精度丢失导致的色带问题
根本原因:WPF的BitmapImage加载16位灰度TIFF时自动转换为Bgr32(8位)格式,
导致原始16位精度(8976个灰度级)被压缩为约35个灰度级,产生明显色带。
修复内容:
- MainViewModel.ExecuteLoadImage: TIFF文件改用TiffBitmapDecoder+PreservePixelFormat加载
- PipelineEditorViewModel.LoadImageFromFile: 同样修复TIFF加载方式
- XP.Common.Converters.ImageConverter: ConvertGray16ToBitmapSource直接输出Gray16格式
- ImageConverter.ToBitmapSourceAutoNormalize: 采用ImageJ风格的线性映射显示算法
|
2026-07-20 11:49:42 +08:00 |
|
ZHANG Zhengxuan
|
b862b31a05
|
已合并 PR 181: 代码结构的整理
进一步对代码框架进行规范化,按照 Service ,Models, ViewModel 和View层进行整理;解决方案统一使用 x64 ; Release文件夹的更新
具体功能点:
1、匹配工件位姿并自动补偿后续检测 ROI √
3、简化显示:CNC 树仅展示已启用的流水线步骤,未启用(停用)的算子不再列出 √
4、修复算子显示名称不统一的问题,都用右侧属性面板的名称 √
5、CNC编码窗体名称不统一,保持与右侧属性面板中算子名称 √
6、优化 Models的组织结构 √
7、清理 Service层进行拆分服务 √
8、架构4层清理 √
|
2026-07-17 18:46:54 +08:00 |
|
zhengxuan.zhang
|
28afe04422
|
Merge branch 'Develop/XP' into Feature/TURBO-002-Cnc
|
2026-07-17 13:14:19 +08:00 |
|
zhengxuan.zhang
|
e4f1cc2e05
|
refactor: 迁移剩余对话框到 IApplicationDialogService,拆分 MatrixEditorViewModel 与 MainViewModel
对话框迁移(全部采用可选构造参数 dialogs,保持向后兼容):
- SettingsViewModel:9 处 MessageBox + 4 处文件/文件夹对话框
- InspectionMapViewModel:4 处 HexMessageBox + 3 处 MessageBox(含三态确认)+ 1 处 OpenFileDialog
- NavigationPropertyPanelViewModel:SaveFileDialog/OpenFileDialog/MessageBox(导航图保存、标定加载)
- Debug 目录(SnapshotManagerViewModel/EventLogViewModel/SnapshotDiffViewModel):全部 MessageBox 与文件对话框
- IApplicationDialogService 新增 ConfirmThreeWay 方法及 SelectOpenFile/SelectSaveFile 可选 initialDirectory 参数
God Class 拆分:
- 从 MatrixEditorViewModel 提取 MatrixOffsetCalculator(推荐示教点计算、自动生成偏移算法,纯静态计算无 UI 依赖)
和 MatrixExecutionCoordinator(模板程序加载与执行编排,替代内联 try-catch)
- 从 MainViewModel 提取 WindowLauncherService,统一管理原 18+ 个 private Window 单例字段,
提供 ShowOrActivate/ShowOrActivateVisible/Show/CloseIfOpen 四种窗口生命周期模式
文档:
- 修正 doc/代码评审.md 第二、三阶段标题状态矛盾及不准确的全称断言,新增第四阶段跟踪剩余工作
资源文件:
- Resources.resx(默认/zh-CN/zh-TW/en-US)新增约 100+ 本地化键,覆盖上述对话框迁移涉及的消息、标题与文件过滤器
测试:
- 同步更新 PipelineEditorViewModelTests/PipelinePropertyTests/CncEditorViewModelTests/MatrixEditorViewModelTests 的构造签名
- 全量 386 个测试通过,无回归
|
2026-07-17 13:04:11 +08:00 |
|
zhengxuan.zhang
|
5dd3d9e8f5
|
完成代码评审第三阶段整改
|
2026-07-17 10:38:21 +08:00 |
|
zhengxuan.zhang
|
c3b2b507ad
|
完成代码评审第二阶段修复
|
2026-07-17 10:04:06 +08:00 |
|
zhengxuan.zhang
|
547f0aa777
|
修复代码评审中的高风险问题
|
2026-07-17 09:41:29 +08:00 |
|
zhengxuan.zhang
|
cba425a376
|
对矩阵池页面进行紧凑布局
|
2026-07-17 09:28:17 +08:00 |
|
zhengxuan.zhang
|
83446a9d95
|
补全安全认证模型合并
|
2026-07-16 17:52:34 +08:00 |
|
zhengxuan.zhang
|
7ab56b0d8c
|
本轮修复全部完成,9项任务都已落地并通过编译验证。总结:
已修复(7个文件):
内存泄漏:ViewportPanelView.xaml.cs、MainViewModel.cs、MainWindow.xaml.cs 中 EventAggregator.Subscribe(..., true) 的 keepSubscriberReferenceAlive 全部改为具名方法订阅 + SubscriptionToken 记录,并在 Cleanup()/Unloaded/OnClosed 时反订阅。
MainViewModel.Cleanup() 补全:现在会反订阅全部 5 个 EventAggregator 事件、_mainViewportService.StateChanged、_recordingService.StateChanged,并停止全部 3 个 Timer。
DumpService 双实例问题:新增 StopEarlyDumpServiceIfSuperseded(),在 DI 容器就绪、CommonModule 内部的 IDumpService 单例接管保护职责后,主动停止并释放提前启动的 _earlyDumpService。
App.xaml.cs OnExit() 重复代码:提取 TryDispose<T>() 帮助方法,9 段"Resolve→Dispose→日志"模板压缩为 9 行调用。
日志占位符 bug:MainViewModel.cs 中 3 处(轴回原点/射线源暖机/一键暖机异常)重复占位符导致 Serilog 渲染中断的问题已修复(已用 Serilog 官方 GitHub issue 验证过这确实是真实 bug)。
空 catch{}:4 个文件共 9 处,全部补充了日志记录。过程中发现并修正了自己引入的一个 bug(ILoggerService.Debug/Warn 不接受 Exception 参数,已改用 {Reason} 占位符)。
AppStateService.Dispose():补上了遗漏的 CncExecutionStateChanged = null。
|
2026-07-16 17:51:23 +08:00 |
|
zhengxuan.zhang
|
57d4532945
|
简化结构
|
2026-07-16 17:39:25 +08:00 |
|
zhengxuan.zhang
|
9d09ca45af
|
已完成合并,Services\Inspection 从 28 个文件减少到 25 个。
具体调整:
IInspectionDefinitionRepository 合入 [JsonInspectionDefinitionRepository.cs](D:/XplorePlane/XplorePlane/Services/Inspection/JsonInspectionDefinitionRepository.cs)
采集模式、配置和异常类型合入 [InspectionExecutionContracts.cs](D:/XplorePlane/XplorePlane/Services/Inspection/InspectionExecutionContracts.cs)
BgaTargetIdGenerator 合入 [BgaTileResultMerger.cs](D:/XplorePlane/XplorePlane/Services/Inspection/BgaTileResultMerger.cs)
删除原来的三个独立文件
类型名称、命名空间、DI 注册和调用方式均未改变
|
2026-07-16 17:33:00 +08:00 |
|
zhengxuan.zhang
|
348d2341e0
|
统一库级别的x64; 更新 Release
|
2026-07-16 17:27:34 +08:00 |
|
zhengxuan.zhang
|
7202817a0c
|
按建议完成四层目录统一,并同步调整命名空间和所有引用。
主要结果:
Cnc/Matrix 已统一。
Inspection/{Archive, Documentation, Results, Pool} 已统一。
Main/{Viewport, Overlay, Recording} 已统一。
Hardware/{Camera, Coordinate} 已统一。
权限、账户、登录统一归入 Security。
|
2026-07-16 17:10:29 +08:00 |
|
zhengxuan.zhang
|
cea810d4bd
|
删除重复的 ImagePersistenceService、旧图像结果模型及过时测试。
图像保存统一交由检测归档服务处理。
清除 CncExecutionService 中无实际用途的 PositionResult 汇总逻辑。
新增 IInspectionArchiveReader,报表视图只依赖归档读取能力,降低耦合。
同步清理和调整相关单元测试、属性测试。
已确认旧持久化服务相关引用为 0。
|
2026-07-16 16:45:35 +08:00 |
|
zhengxuan.zhang
|
19468d58ec
|
移除 CncExecutionService 对旧 IImagePersistenceService 的构造依赖及 DI 注册。[CncExecutionService.cs (line 93)](/D:/XplorePlane/XplorePlane/Services/Cnc/CncExecutionService.cs:93)
保留旧实现作为独立兼容工具,不再进入 CNC 运行链路。
删除 MatrixOrchestrationService 未使用的 IInspectionResultStore 依赖。[MatrixOrchestrationService.cs (line 45)](/D:/XplorePlane/XplorePlane/Services/Matrix/MatrixOrchestrationService.cs:45)
报告查看器改为通过统一归档门面查询结果。[InspectionReportViewerViewModel.cs (line 25)](/D:/XplorePlane/XplorePlane/ViewModels/Cnc/InspectionReportViewerViewModel.cs:25)
检查图运行上下文也统一使用 IInspectionArchiveService。[InspectionRunDocumentationContext.cs (line 28)](/D:/XplorePlane/XplorePlane/Services/InspectionDocumentation/InspectionRunDocumentationContext.cs:28)
同步调整相关测试构造代码。
|
2026-07-16 16:31:57 +08:00 |
|
zhengxuan.zhang
|
08aecdd039
|
清理完成,编译通过。ViewModel 从约 1566 行精简到 1305 行,移除了所有与已删除 ROI 面板相关的死代码:
11 个字段(_previewImage、_selectedEditableRegion、_isDrawingPolygon 等)
9 个属性(PreviewImage、IsDrawingPolygon、RegionInstruction、ResultOverallStatus 等)
3 个集合(EditableRegions、ResultRows、VisibleResultRows)
5 个命令(CaptureReferenceCommand、AddRectangleRegionCommand 等)
10+ 个方法(CaptureReferenceAsync、AddRectangleRegion、StartPolygonRegion、AddPolygonPoint、ApplyResultFilter 等)
2 个 using 引用(System.Windows.Media.Imaging、XP.ImageProcessing.RoiControl.Models)
|
2026-07-16 16:23:34 +08:00 |
|
zhengxuan.zhang
|
a276d71da7
|
已完成 XplorePlane/Models 模块化整理:
Cnc:CNC、矩阵、图像采集、测量模型
Debug:调试面板模型
ImageProcessing:流水线模型
Inspection:检测定义模型
InspectionDocumentation:检测结果、文档与追溯模型
Main:导航及全局状态模型
Recipe:配方模型
Setting:用户、权限、密码及认证模型
|
2026-07-16 16:12:16 +08:00 |
|
zhengxuan.zhang
|
f996798560
|
feat(matrix): 优化矩阵示教与位置管理
- 将 2×2 矩阵推荐示教点调整为对角位置 1、4
- 根据对角示教坐标自动推算其余位置
- 支持右键记录任意矩阵位置的实时坐标
- 支持通过右键菜单启用或禁用指定位置
- 使用不同颜色区分已示教、当前、自动生成和禁用状态
- 持久化补充示教点并完善矩阵专项测试
|
2026-07-16 16:06:15 +08:00 |
|
zhengxuan.zhang
|
e03affe868
|
CNC编码窗体名称不统一,保持与右侧属性面板中算子名称
|
2026-07-16 15:55:23 +08:00 |
|
zhengxuan.zhang
|
a9e4415276
|
feat(matrix): 统一示教坐标单位并优化默认布局
- 将矩阵编排默认布局调整为 2×2
- 记录位置时实时读取运动控制 StageX/StageY 坐标
- 统一示教、预览和自动推算坐标单位为 mm
- 坐标与偏移统一保留小数点后 3 位
- 增加矩阵布局、实时坐标记录及单位换算测试
|
2026-07-16 15:48:59 +08:00 |
|
ZHANG Zhengxuan
|
71cbf8f765
|
已合并 PR 176: 累计功能更新
1、各模块启用耗时的分析,启动优化 — Lazy<T> 延迟加载图像处理服务;增加启动页面
2、复位,双击移动功能;
3、CNC存储结构的升级,增加了一些变量
4、矩阵编排逻辑的调整,引入了手动交互部分
5、主界面图像预览区 鼠标左键事件重合的问题的修复
6、CNC移除监控页面和相关逻辑,运行时也显示 编排的窗体;移除运行监控页面
7、移除标记图的标记的图像和备注按钮
|
2026-07-16 15:35:51 +08:00 |
|
zhengxuan.zhang
|
8ef120bd9d
|
Merge branch 'Feature/TURBO-002-Cnc' into Feature/TURBO-002-Cnc
|
2026-07-16 15:27:02 +08:00 |
|
zhengxuan.zhang
|
915af508a4
|
Merge branch 'temp' into Feature/TURBO-002-Cnc
|
2026-07-16 15:26:21 +08:00 |
|
zhengxuan.zhang
|
5e0d9ee38d
|
Merge branch 'Feature/TURBO-002-Cnc'
|
2026-07-16 15:24:32 +08:00 |
|
zhengxuan.zhang
|
9fec3d233e
|
Merge branch 'Feature/TURBO-002-Cnc' into Feature/TURBO-002-Cnc
|
2026-07-16 15:02:54 +08:00 |
|
zhengxuan.zhang
|
e352bd61aa
|
简化显示:CNC 树仅展示已启用的流水线步骤,未启用(停用)的算子不再列出
|
2026-07-16 14:53:27 +08:00 |
|
zhengxuan.zhang
|
fccb9022b4
|
Merge branch 'Develop/XP' into Feature/TURBO-002-Cnc
# Conflicts:
# XplorePlane/App.config
|
2026-07-16 14:43:44 +08:00 |
|
LI Wei.lw
|
d463a42641
|
已合并 PR 174: 排除检测区域及修复画中画
1.空隙检测增加排除检测区域
2.修复导航相机PiP青框显示异常及载物台运动超限问题
|
2026-07-16 14:39:36 +08:00 |
|
zhengxuan.zhang
|
9c8310e769
|
在 CNC 树里选中一个锚点节点(或不选,插入到末尾),点击"模板对齐"按钮,会新建一个默认命名为"对齐N"的节点。
选中该节点后,右侧会显示专属编辑器(TemplateMatchAlignmentNodeEditorView),可以:
选择模板来源图 → 框选模板区域 → 学习模板(自动保存模板文件与模型)
在示教图上圈定检测 ROI 多边形(右键完成,至少 3 个顶点)
做一次自匹配确定基准位姿,或者用"使用模板中心作为基准"降级方案
配置匹配阈值/模式/角度容差/最大匹配数
配置校正策略:ROI 补偿模式 / 置信度下限 / 平移旋转容差 / 失败处理策略(中止、暂停等待、跳过继续)
运行 CNC 时,该节点会自动对当前采集图做模板匹配,算出与基准位姿的偏差,并把变换后的 ROI 自动写入其后紧跟的检测模块节点参数里,实现工件位姿自动校正
|
2026-07-16 13:52:48 +08:00 |
|
zhengxuan.zhang
|
850acc0095
|
fix(inspection-pool): 修复 BGA Tile 配置与主界面预览不同步
- 将检测类型、BGA 行列、Pitch、编号方式及生成步距改为即时绑定
- BGA 网格参数变化后提示重新生成 Tile,避免沿用旧映射
- 生成 2×2 Tile 后立即发布检测池预览并刷新主界面图层
- 增加四块 Tile 预览发布与旧映射提示的回归测试
- 将本地调试射线源切换为 Simulated 全仿真模式
|
2026-07-16 13:06:20 +08:00 |
|
zhengxuan.zhang
|
5c769ac9ce
|
feat(inspection): add main viewport visualization for inspection pool
- 保留检测池参数配置独立弹窗
- 在主界面实时显示 2×2 Tile 检测图层
- 增加主界面“开始检测”和“设置”入口
- 显示待检测、检测中、PASS、FAIL、MISS、ERROR 状态
- 实时同步 Overview、Tile 检测和 Restore Position 进度
- 检测完成后恢复全局图并显示聚合统计
- 补充检测池运行进度事件及序列测试
- 更新矩阵池使用操作文档
|
2026-07-16 11:30:52 +08:00 |
|
zhengxuan.zhang
|
afc3d9d345
|
docs(inspection): describe main viewport pool workflow
|
2026-07-16 11:27:36 +08:00 |
|
zhengxuan.zhang
|
7eae3794ff
|
feat(inspection): visualize pool execution in main viewport
|
2026-07-16 11:26:52 +08:00 |
|
TANG Haowei
|
143f9327ae
|
Merged PR 175: 合并Develop:CT扫描界面更改;增加面内偏转
1:CT扫描界面更改,新建/加载/编辑;用户控件模式
2:增加面内偏转;俯仰;偏摆检测
|
2026-07-16 11:09:27 +08:00 |
|
zhengxuan.zhang
|
23dfd10c3e
|
refactor(inspection): reorganize pool workflow layout
|
2026-07-16 10:57:03 +08:00 |
|
Tanghaowei
|
c8ef7e1a04
|
#T:ini文件增加记录扫描位置
|
2026-07-16 10:46:20 +08:00 |
|
Tanghaowei
|
52ac91f790
|
#T:提交测试编码问题。
|
2026-07-16 10:42:23 +08:00 |
|
zhengxuan.zhang
|
2ce1d8bd16
|
fix(inspection): use one-way result summary bindings
|
2026-07-16 10:37:22 +08:00 |
|
zhengxuan.zhang
|
2a761a2548
|
docs(inspection): update remediation checklist
|
2026-07-16 10:33:15 +08:00 |
|