⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 somimagetester.java

📁 拥有图形界面的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * SOMImageTester.java * This sample application uses some code written by Jeff Heaton took by the article * "Programming Neural Networks in Java" at http://www.jeffheaton.com/ai/index.shtml */package org.joone.samples.editor.som;import java.io.*;/** * * @author  Julien Norman */public class SOMImageTester extends javax.swing.JFrame {        private int DrawSizeX = 81;    private int DrawSizeY = 81;    private int ScaleSizeX = 9;    private int ScaleSizeY = 9;    private java.util.Vector imageHolder = new java.util.Vector();    private java.awt.Image downsamplePreviewImage = null;    private java.awt.image.BufferedImage downSample = new java.awt.image.BufferedImage(getScaleSizeX(),getScaleSizeY(),java.awt.image.BufferedImage.TYPE_INT_RGB);    private java.awt.image.BufferedImage drawImage = new java.awt.image.BufferedImage(getDrawSizeX(),getDrawSizeY(),java.awt.image.BufferedImage.TYPE_INT_RGB);    private java.util.Vector idHolder = new java.util.Vector();    private int currentImage = 0;    private boolean alone; // true if launched from the command prompt    /**     * Specifies the left boundary of the cropping     * rectangle.     */    protected int downSampleLeft;        /**     * Specifies the right boundary of the cropping     * rectangle.     */    protected int downSampleRight;        /**     * Specifies the top boundary of the cropping     * rectangle.     */    protected int downSampleTop;        /**     * Specifies the bottom boundary of the cropping     * rectangle.     */    protected int downSampleBottom;        /**     * The downsample ratio for x.     */    protected double ratioX;        /**     * The downsample ratio for y     */    protected double ratioY;        /**     * The pixel map of what the user has drawn.     * Used to downsample it.     */    protected int pixelMap[];        /** Creates new form SOMImageTester */    public SOMImageTester() {        this(false);    }        /** Creates new form SOMImageTester */    public SOMImageTester(boolean main) {        alone = main;        initComponents();        setup();        setSize(300,350);        setResizable(false);    }        /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    private void initComponents() {//GEN-BEGIN:initComponents        ImageHolderPanel = new javax.swing.JPanel();        PainterPanel = new ImagePainter();        DownsamplePanel = new ImageDrawer();        InfoPanel = new javax.swing.JPanel();        ImageIDLabel = new javax.swing.JLabel();        IDInputTextField = new javax.swing.JTextField();        ImageNoLabel = new javax.swing.JLabel();        DownSampleButton = new javax.swing.JButton();        ImageScrollBar = new javax.swing.JScrollBar();        ControlPanel = new javax.swing.JPanel();        HelpButton = new javax.swing.JButton();        NewImageButton = new javax.swing.JButton();        ClearImageButton = new javax.swing.JButton();        SaveImagesButton = new javax.swing.JButton();        QuitButton = new javax.swing.JButton();        addWindowListener(new java.awt.event.WindowAdapter() {            public void windowClosing(java.awt.event.WindowEvent evt) {                exitForm(evt);            }        });        ImageHolderPanel.setLayout(new java.awt.GridLayout(1, 2));        PainterPanel.setToolTipText("You can draw on this image.");        ImageHolderPanel.add(PainterPanel);        DownsamplePanel.setToolTipText("This contains the down sampled image.");        ImageHolderPanel.add(DownsamplePanel);        getContentPane().add(ImageHolderPanel, java.awt.BorderLayout.CENTER);        InfoPanel.setLayout(new java.awt.GridLayout(2, 2));        ImageIDLabel.setText("Image ID");        InfoPanel.add(ImageIDLabel);        IDInputTextField.setText("1");        InfoPanel.add(IDInputTextField);        ImageNoLabel.setFont(new java.awt.Font("Dialog", 1, 14));        ImageNoLabel.setText("Image 1 of 1");        ImageNoLabel.setToolTipText("The current image number.");        InfoPanel.add(ImageNoLabel);        DownSampleButton.setText("Down Sample");        DownSampleButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                DownSampleButtonActionPerformed(evt);            }        });        InfoPanel.add(DownSampleButton);        getContentPane().add(InfoPanel, java.awt.BorderLayout.NORTH);        ImageScrollBar.setMaximum(1);        ImageScrollBar.setMinimum(1);        ImageScrollBar.setToolTipText("Use scroll bar to scroll through images.");        ImageScrollBar.addAdjustmentListener(new java.awt.event.AdjustmentListener() {            public void adjustmentValueChanged(java.awt.event.AdjustmentEvent evt) {                OnScrolled(evt);            }        });        getContentPane().add(ImageScrollBar, java.awt.BorderLayout.EAST);        ControlPanel.setLayout(new java.awt.GridLayout(5, 2));        ControlPanel.setBorder(new javax.swing.border.TitledBorder("Controls"));        HelpButton.setText("Help");        HelpButton.setToolTipText("Help on this application.");        HelpButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                HelpButtonActionPerformed(evt);            }        });        ControlPanel.add(HelpButton);        NewImageButton.setText("New Image");        NewImageButton.setToolTipText("Create a new image.");        NewImageButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                NewImageButtonActionPerformed(evt);            }        });        ControlPanel.add(NewImageButton);        ClearImageButton.setText("Clear Image");        ClearImageButton.setToolTipText("Clear the drawing from this image.");        ClearImageButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                ClearImageButtonActionPerformed(evt);            }        });        ControlPanel.add(ClearImageButton);        SaveImagesButton.setText("Save Images");        SaveImagesButton.setToolTipText("Save the images out to Joone format.");        SaveImagesButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                SaveImagesButtonActionPerformed(evt);            }        });        ControlPanel.add(SaveImagesButton);        QuitButton.setText("Quit");        QuitButton.setToolTipText("Quit this application.");        QuitButton.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                QuitButtonActionPerformed(evt);            }        });        ControlPanel.add(QuitButton);        getContentPane().add(ControlPanel, java.awt.BorderLayout.SOUTH);        pack();    }//GEN-END:initComponents        private void HelpButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_HelpButtonActionPerformed        // Add your handling code here:        // Produce a quick help box        String help1 = new String("This application allows the user to draw characters or images for recognition by a Joone neural network.");        String help2 = new String("It is intended to test a SOM or Kohonen Network by providing an image recognition example.");        String help3 = new String("The drawing image grid is 81 X 81 but the images saved in the file are 9x9 down sampled images.");        String help4 = new String("The saved file has 81 inputs and an id.  The id can be used to identify the character.");        String help5 = new String("Read the Editor's help pages to learn how to use this example.");                javax.swing.JOptionPane.showMessageDialog(this,help1+"\n"+help2+"\n"+help3+"\n"+help4+"\n"+help5);            }//GEN-LAST:event_HelpButtonActionPerformed        private void QuitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_QuitButtonActionPerformed        // Add your handling code here:        this.exitTester();    }//GEN-LAST:event_QuitButtonActionPerformed        private void SaveImagesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SaveImagesButtonActionPerformed        // Add your handling code here:        SaveImagesOut();    }//GEN-LAST:event_SaveImagesButtonActionPerformed        private void NewImageButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NewImageButtonActionPerformed        // Add your handling code here:        NewImage();    }//GEN-LAST:event_NewImageButtonActionPerformed        private void ClearImageButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ClearImageButtonActionPerformed        // Add your handling code here:        clearCurrentImage();    }//GEN-LAST:event_ClearImageButtonActionPerformed        private void DownSampleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DownSampleButtonActionPerformed        // Add your handling code here:        downSample();        repaint();    }//GEN-LAST:event_DownSampleButtonActionPerformed        private void OnScrolled(java.awt.event.AdjustmentEvent evt) {//GEN-FIRST:event_OnScrolled        // Add your handling code here:        Integer id = null;        if ( evt.getAdjustmentType() == java.awt.event.AdjustmentEvent.TRACK ) {            if ( evt.getValue() <= imageHolder.size() ) {                try {                    id = new Integer(IDInputTextField.getText());                }                catch(java.lang.NumberFormatException ex) {                    ImageScrollBar.setValue(ImageScrollBar.getValue()-ImageScrollBar.getUnitIncrement());                    javax.swing.JOptionPane.showMessageDialog(this,"ID must be an integer value.");                    return;                }                idHolder.set(currentImage-1, id);                currentImage = evt.getValue();                IDInputTextField.setText(""+((Integer)idHolder.get(currentImage-1)).intValue());                drawImage = (java.awt.image.BufferedImage)imageHolder.get(currentImage-1);                ((ImagePainter)PainterPanel).setImageToEdit(drawImage);                downSample();                ImageNoLabel.setText("Image 1 of "+currentImage);                repaint();                //PainterPanel.repaint();                //DownsamplePanel.repaint();            }        }    }//GEN-LAST:event_OnScrolled        /** Exit the Application */    private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm        this.exitTester();    }//GEN-LAST:event_exitForm        private void exitTester() {        if (alone)            System.exit(0);        else            this.dispose();    }        /**     *     */    public void setup() {        if ( imageHolder != null ) {            drawImage.getGraphics().setColor(new java.awt.Color(255,255,255));            drawImage.getGraphics().fillRect(0,0, drawImage.getWidth(),drawImage.getHeight());            imageHolder.add(drawImage);            ((ImagePainter)PainterPanel).setImageToEdit(drawImage);                        if ( downsamplePreviewImage!= null) {                downsamplePreviewImage.getGraphics().setColor(java.awt.Color.WHITE);                downsamplePreviewImage.getGraphics().fillRect(0,0, downsamplePreviewImage.getWidth(this),downsamplePreviewImage.getHeight(this));                ((ImageDrawer)DownsamplePanel).setImageToDraw(downsamplePreviewImage);            }            idHolder.add(new Integer(1));            currentImage = 1;        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -