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

Debug:查看样品

test类samplePtyLo_Guass(manager,recon_params)初始化之后# 就这一行搞定 # 默认模式去掉白边只有纯原子save_obj_fft(sample.quick_get_object_complex()[0],init_params[workdir]/init_no_bg.png)# 加上 crop_bgFalse保留最原始的白边跟最初的效果一样save_obj_fft(sample.quick_get_object_complex()[0],init_params[workdir]/init_with_bg.png,crop_bgFalse)# 执行重构之前 sample.recon_base(recon_params)# # 下面是你新加的画图代码用来查看 3σ 拼接效果# importmatplotlib.pyplotaspltimportnumpyasnpdefsave_obj_fft(obj_layer,save_path,crop_bgTrue,bg_amp1.0): 极简封装保存 相位振幅FFT 三张图 obj_layer: 一层复数图像 (GPU或CPU格式都行) save_path: 保存的路径如 test.png crop_bg: True去掉白边背景(默认), False保留原始白边背景 bg_amp: 背景振幅值默认 1.0 (仅在 crop_bgTrue 时生效) # 1. 转 CPUifhasattr(obj_layer,get):obj_layerobj_layer.get()phasenp.angle(obj_layer)ampnp.abs(obj_layer)# 2. 根据 flag 决定是否裁剪ifcrop_bg:masknp.abs(amp-bg_amp)0.001rows,colsnp.any(mask,axis1),np.any(mask,axis0)ifnp.any(rows)andnp.any(cols):rnp.where(rows)[0][[0,-1]]cnp.where(cols)[0][[0,-1]]buf3slc(slice(max(0,r[0]-buf),min(amp.shape[0],r[1]buf1)),slice(max(0,c[0]-buf),min(amp.shape[1],c[1]buf1)))phase,ampphase[slc],amp[slc]# 3. 算 FFTfft_lognp.log(np.abs(np.fft.fftshift(np.fft.fft2(amp)))1e-8)# 4. 画图保存fig,axesplt.subplots(1,3,figsize(18,5))axes[0].imshow(phase,cmapjet);axes[0].set_title(Phase)axes[1].imshow(amp,cmapgray);axes[1].set_title(Amplitude)axes[2].imshow(fft_log,cmapinferno);axes[2].set_title(FFT)plt.tight_layout()plt.savefig(save_path,dpi150)plt.close()# 就这一行搞定 # 默认模式去掉白边只有纯原子save_obj_fft(sample.quick_get_object_complex()[0],init_params[workdir]/init_no_bg.png)# 加上 crop_bgFalse保留最原始的白边跟最初的效果一样save_obj_fft(sample.quick_get_object_complex()[0],init_params[workdir]/init_with_bg.png,crop_bgFalse)# class PtyLo(EnginesMixin)iter_000_check.jpgiter_001_check.jpgiter_002_check.jpgdef_engine_iteration_end(self,i,error,start_time):self.update_manager()self.manager._engine_iteration_end(i,error,start_time)# # 新增在指定迭代次数时保存中间过程图# # 设定你想看哪几次的结果比如第 0 次初始、第 1 次、第 5 次、第 10 次watch_iterations[0,1,2,3,4,5,10,20,50]ifiinwatch_iterations:importmatplotlib.pyplotaspltimportnumpyasnp# 1. 获取当前的复数物体 (记得加 self._get_object_complex() 或者直接用 self.manager._object)# 注意这里必须用 manager 里的 object因为 update_manager 刚刚同步过最新状态current_objself.manager._object# 2. 取第 0 层转 CPUlayer_0current_obj[0]ifhasattr(layer_0,get):layer_0layer_0.get()phase_imgnp.angle(layer_0)amp_imgnp.abs(layer_0)# 3. 画图fig,axesplt.subplots(1,2,figsize(12,5))im1axes[0].imshow(phase_img,cmapjet)axes[0].set_title(fIter{i}- 相位图 (Error:{error:.4f}))plt.colorbar(im1,axaxes[0])im2axes[1].imshow(amp_img,cmapgray)axes[1].set_title(fIter{i}- 振幅图)plt.colorbar(im2,axaxes[1])plt.tight_layout()# 4. 保存到工作目录不弹窗直接存盘save_pathself.manager.workdir/fiter_{i:03d}_check.pngplt.savefig(save_path,dpi150)plt.close()# 关闭画板释放显存极其重要否则多张图会把显存撑爆#
http://www.rkmt.cn/news/1407302.html

相关文章:

  • 杭州企业招人,别再忽略背调这道关
  • 阿里 Qwen3.7-Max 冲上编程榜前列:国产 AI Coding 真追上来了?
  • XposedRimetHelper:钉钉虚拟定位的终极指南与Hook技术解析
  • 导师严选!2026年不容错过的专业降AIGC工具 - 降AI小能手
  • 从“能用”到“好用”:基于ShardingSphere 5.1.2实现自定义分库分表策略(附完整代码)
  • Windows 图形界面配置 Ollama 镜像地址完整教程
  • ElementPlus 多个并列 Table 独立全选/取消全选 (适配嵌套表格业务)
  • dashscope-openai 20260527
  • 威海多特瑞:9 年深耕流量仪表,以隔离涡街技术打破国外垄断 - 资讯纵览
  • 为AI智能体构建防篡改审计日志:基于数字签名的责任追溯方案
  • 【Java零基础入门22】Java注解完整详解:内置注解、元注解、自定义注解
  • 电站锅炉燃烧优化及低NOx排放控制若干问题优化算法【附仿真】
  • 智能化的固定资产管理软件公司选型参考与选择逻辑 - 资讯快报
  • 2026年罗茨风机深度选型:如何为你的工业场景匹配最佳方案? - 资讯纵览
  • Inspex:一种提升顺序处理器性能的轻量级推测执行微架构
  • FPGA实时癫痫检测:时间序列分割与异常检测的硬件实现
  • API聚合平台从比价到选型:2026年AI大模型API中转站选购核心逻辑与实战评估
  • StreamFX终极指南:5个核心功能让你的直播画面瞬间升级
  • 终极指南:如何在Windows上使用QKeyMapper实现零重启按键映射
  • 义乌网店饰品批发厂家实力对比:五大硬指标逐一解析 - 资讯快报
  • WarcraftHelper完整指南:让魔兽争霸3在现代电脑上完美运行的简单方案
  • 创业公司如何建立合作伙伴生态
  • 广州高精度固晶机厂家推荐哪家好?领衔六大实力企业!
  • 高端腕表维修深度测评|从设备、技术、服务四维实测,解析盛时出圈原因 - 资讯快报
  • 圆刀片定制批发,选口碑好的就错了?
  • 高效搞定学术文稿:paperxie 论文智能创作功能实操用法分享
  • 电商关键词挖掘:Java 爬虫抓取 1688 推荐搜索词
  • 7×24小时不打烊:数字人智能客服如何重塑政务服务“最后一公里“
  • 2026四向穿梭车怎么选?越来越多企业开始关注“系统能力”
  • 2026年河北钢格栅行业深度攻略:选型、合规、品牌与落地全指南 - 资讯纵览