• COI实验室技能——自动切换显示器画面以及实现采集大量实验数据的方法(采集数据可供深度学习训练)


    COI实验室技能——自动切换显示器画面以及实现采集大量实验数据的方法 (可供深度学习训练)

      本文将介绍一种自动切换显示图片的方法,可以产生不同图像的实验数据;在该方法的基础上,结合控制相机采集图片的程序,即实现采集大量的实验数据。我们可以用这种方法为深度学习提供实验数据集,训练神经网络,实现特定的应用任务。

    一、需求与应用场景

    需求:假如手上有很多张图片(数据集),如何控制这些图片在显示器中自动切换显示呢?并且具有以下显示要求:
    ● 显示图片时没有窗口的边框;
    ● 图片可按任意尺寸进行显示;
    ● 图片可在任意位置进行显示,包括第二屏幕;
    具体实现结果,如下图所示,
    在这里插入图片描述
    如图,该方法实现了无边框任意位置自动切换图片的功能,这在一些光学实验上可以作为很好的实验目标。

    应用场景:
    ● 在空间光调制器上加载自己的图片,并实现自动切换图片;
    ● 将显示器作为光学成像实验的靶标,可以采集大量不同画面的实验数据,比如将它应用到散射成像中,就可以得到退化图像和清晰图像的配对数据,进而可以训练出实现散射成像的神经网络模型。

    二、实现方法

      笔者主要通过matlab的java.swing工具包实现这一功能。其具体实现流程包括四步:
    在这里插入图片描述
    ------------------
    实现代码如下,自行准备好图片,可以直接复制下面代码到matlab中运行:

    % matlab实现画面的自动显示
    clc,clear
    close all;
    
    n = 50;		% 图片集数量
    show_in_second_screen = 0;	% 是否在第二显示器显示
    for i = 1:n
    	% 读取图片并自动切换下一张图
    	img = imread([num2str(i),'.png']);	% 注意图片的文件路径
    	
    	% 调用java.swaing工具包实现相关操作
    	jimg = im2java(img);
    	frame = javax.swing.JFrame;
    	frame.setUndecorated(true);
    	
    	% 导入图片
    	icon = javax.swing.ImageIcon(jimg);
    	label = javax.swing.JLabel(icon);
    	frame.getContentPane.add(label);
    	
    	% 设置窗口的位置,窗口大小默认为根据图像的尺寸
    	if show_in_second_screen
    		screenSize = get(0, 'ScreenSize');
    		frame.setLocation(screenSize,0);		% 平移第一显示器的宽度
    	else
    		frame.setLocation(100,100);		% 根据自己的意愿设置显示位置
    	end
    	
    	% 显示
    	frame.pack;
    	frame.repaint;
    	frame.show;
    	pause(1);
    end 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    代码和数据可从网盘下载:
    链接: https://pan.baidu.com/s/1KYLPijH_hznHk2u_ZcOpSw?pwd=p26k
    提取码: p26k

    采集大量实验数据
      在实现自动切换图片的功能之后,只要在程序执行显示命令之后,添加控制相机采集图片的程序即可完成自动采集数据的任务。matlab控制相机采集图片的方法可参考之前的博文:COI实验室技能:MATLAB控制PCO相机

    三、应用实例

      笔者利用上述方法进行散射成像的实验测试,将显示器放置在散射介质后面,采集对应的清晰图片和退化图片,训练神经网络,从而得到能实现散射成像的神经网络模型,其结果如下:

    在这里插入图片描述
    自动切换显示画面的效果:
    在这里插入图片描述
      本次实验室技能介绍就到这里啦,后续持续补充,欢迎各位读者交流和指点!

  • 相关阅读:
    第三章 多维随机变量及其分布
    NoSQL之Redis配置与优化
    万字C语言之分支语句和循环语句
    智能PDU的“智能”体现在哪些方面?
    Java学习路线图(完整详细2021版)
    Shell 脚本学习 day01
    Base64结合密码学x509编码和PKCS#8编码
    vue获取当前日期以及当前日期为基点获取任何日期,超省事
    链夹式烟苗注水移栽机的总体设计
    yum clean all提示“无法从 /var/lib/rpm 打开软件包数据库”
  • 原文地址:https://blog.csdn.net/qq_34917728/article/details/126161221