• 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相机

    三、应用实例

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

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

  • 相关阅读:
    力扣每日一题2022-09-22简单题:能否连接形成数组
    JAVA小游戏拼图
    Flink1.17 DataStream API
    深入理解Java虚拟机之【堆】
    K_A05_001 基于 STM32等单片机驱动8X8点阵模块(MAX7219)显示0-9
    【数据结构】什么是哈希表?为什么哈希表的查询时间复杂度是O
    使用 IPSET 添加 CDN 节点 IP(IPv4/IPv6)到防火墙白名单
    【算法与数据结构】538、LeetCode把二叉搜索树转换为累加树
    《网络是怎样连接的》读书笔记
    unity3d-游戏物体控制方法
  • 原文地址:https://blog.csdn.net/qq_34917728/article/details/126161221