BIRDS简介

BIRDS(Bi-channel Image Registration and Deep-learning Segmentation for efficient, versatile mapping of mouse brain)是ImageJ的一个插件,由费鹏老师实验室开发,主要用于小鼠脑片配准和细胞计数。BIRDS改进了脑片与图谱的配准算法,并借助Imaris实现了全脑的三维可视化。

BIRDS界面

BIRDS主要包括downsample、coarse、precise、visual和setSeg五个部分,分别用于图像预处理、图片配准、可视化检查和手动校正以及脑区分割预测。

我关注的主要是前三部分,核心是脑片和图谱的配准,具体流程如下图。

BIRDS脑片配准流程

Java GUI 组件

JPanel 面板

1
JPanel northPanel = new JPanel();

JLabel 标签

1
JLabel urlLabel = new JLabel("url:");

JTextField 单行文本框

1
JTextField urlText = new JTextField(20);

JOptionPane

1
JOptionPane.showMessageDialog(null,"Pay attention to the cache url!","warning",JOptionPane.WARNING_MESSAGE);

JTabbedPane

1
2
3
4
5
6
JTabbedPane centerPanel;
JPanel mypanel = new JPanel();
Button mybutton = new Button("import");
mypanel.add(mybutton);
centerPanel.addTab("rawImg", new ImageIcon(tabImage), mypanel);
centerPanel.setSelectedIndex(0);

JButton 按钮

1
JButton urlButton = new JButton("choose");

JTextArea 多行文本框

1
JTextArea logText = new JTextArea("Welcome!");

JFrame 窗

1
2
3
4
5
6
7
8
frame = new JFrame("BIRDS01");
frame.add(southJsp, BorderLayout.SOUTH);
frame.add(centerPanel, BorderLayout.CENTER);
frame.add(northPanel, BorderLayout.NORTH);
frame.setSize(500, 600);
frame.setVisible(true);
//frame.setLocation(600, 300);
frame.setLocationRelativeTo(null);

组件触发事件

1
2
3
4
5
6
7
8
9
10
11
urlButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("o((>ω< ))o");
}
});
centerPanel.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
System.out.println("目前选中的是面板" + centerPanel.getSelectedIndex());
}
})

获取ImageJ图片

1
2
3
4
5
import ij.ImageJ;
import ij.IJ;

new ImageJ(); //打开ImageJ
brainImg = IJ.getImage(); //获取导入ImageJ的图片

今日总结

不知道是不是因为把显示器搬到实验室的原因,今天工作非常有动力,面对BIRDS源码中超级多的包和类,一点都没有害怕,就奔着一个很小的目标去了:我要搞清楚这个插件是怎么获取到我导入ImageJ中的图片的。今天主要就是学习了BirdsPlugin.java这个文件的代码,对应的是BIRDS插件的GUI,组件布局和触发事件等都在这个文件里面。虽然还不太熟悉java中图像处理的一些方法,但今天学会了看API(要是有具体的使用示例就更好了),也是一个进步!

下一步还是要明确目标:学习脑片与图谱配准的算法!!!BirdsPlugin.java中case2要仔细读一下,我一切换到precise板块,极短的时间内就会弹出配准后的脑片序列,而且也不像提前存好的图片,这个tab触发的逻辑要仔细读一下。不过脑片与图谱配准的核心算法应该是在coarse那部分,明天认真读一下!!!

参考文章