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

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

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

目录

  • 一、需求与应用场景
  • 二、实现方法
  • 三、应用实例

一、需求与应用场景

需求:假如手上有很多张图片(数据集),如何控制这些图片在显示器中自动切换显示呢?并且具有以下显示要求:
● 显示图片时没有窗口的边框;
● 图片可按任意尺寸进行显示;
● 图片可在任意位置进行显示,包括第二屏幕;
具体实现结果,如下图所示,

如图,该方法实现了无边框任意位置自动切换图片的功能,这在一些光学实验上可以作为很好的实验目标。

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

二、实现方法

  笔者主要通过matlab的java.swing工具包实现这一功能。其具体实现流程包括四步:
COI实验室技能——自动切换显示器画面以及实现采集大量实验数据的方法(采集数据可供深度学习训练)_第1张图片
------------------
实现代码如下,自行准备好图片,可以直接复制下面代码到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 

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

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

三、应用实例

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


自动切换显示画面的效果:

  本次实验室技能介绍就到这里啦,后续持续补充,欢迎各位读者交流和指点!

你可能感兴趣的:(计算光学成像COI实验室技能,深度学习,matlab,第二显示器显示,自动切换画面)