Java 可不可以做图像识别的系统

Python016

Java 可不可以做图像识别的系统,第1张

当然可以。

一、纯JAVA开发的技术可行性,即JAVA是否能够实现图像识别的各种算法。

二、如果第一点没有问题,纯JAVA与C++相比,开发效率上的差异。效率要低很多,和具体问题有关。

三、如果第一点没有问题且第二点差异不太大时,纯JAVA与C++相比,相同算法的情况下,软件运行效率的差异。运行效率的差异也很大,也是和具体的算法有关。

摘要图像识别是目前很热门的研究领域,涉及的知识很广,包括信息论、模式识别、模糊数学、图像编码、内容分类等等。本文仅对使用Java实现了一个简单的图像文本二值处理,关于识别并未实现。

步骤

建立文本字符模板二值矩阵

对测试字符进行二值矩阵化处理

代码

/*

* @(#)StdModelRepository.java

*

* This program is free softwareyou can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundationeither version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTYwithout even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU Library General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this programif not, write to the Free Software

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

package cn.edu.ynu.sei.recognition.utilimport java.awt.Imageimport java.awt.image.BufferedImageimport java.io.Fileimport java.io.IOExceptionimport java.util.ArrayListimport java.util.Listimport java.util.logging.Levelimport java.util.logging.Loggerimport javax.imageio.ImageIO/** * Hold character charImgs as standard model repository.

* @author 88250

* @version 1.0.0.0, Mar 20, 2008

*/

public class StdModelRepository {

/** * hold character images

*/ List charImgs = new ArrayList()

/** * default width of a character

*/ static int width = 16 /** * default height of a character

*/ static int height = 28 /** * standard character model matrix

*/ public int[][][] stdCharMatrix = new int[27][width][height]

/** * Default constructor.

*/ public StdModelRepository() {

BufferedImage lowercase = null try {

lowercase = ImageIO.read(new File("lowercase.png"))

} catch (IOException ex) {

Logger.getLogger(StdModelRepository.class.getName()).

log(Level.SEVERE, null, ex)

}

for (int i = 0 i <26 i++) {

charImgs.add(lowercase.getSubimage(i * width,

0,

width,

height))

}

for (int i = 0 i <charImgs.size()i++) {

Image image = charImgs.get(i)

int[] pixels = ImageUtils.getPixels(image,

image.getWidth(null),

image.getHeight(null))

stdCharMatrix[i] = ImageUtils.getSymbolMatrix(pixels, 0).clone()

ImageUtils.displayMatrix(stdCharMatrix[i])

}

}

}

/*

* @(#)ImageUtils.java

*

* This program is free softwareyou can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundationeither version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTYwithout even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU Library General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this programif not, write to the Free Software

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

package cn.edu.ynu.sei.recognition.utilimport java.awt.Imageimport java.awt.image.PixelGrabberimport java.util.logging.Levelimport java.util.logging.Logger/** * Mainipulation of image data.

* @author 88250

* @version 1.0.0.3, Mar 20, 2008

*/

public class ImageUtils {

/** * Return all of the pixel values of sepecified <code>image<.>* @param image the sepecified image

* @param width width of the image

* @param height height of the image

* @return */ public static int[] getPixels(Image image, int width, int height) {

int[] pixels = new int[width * height]

try {

new PixelGrabber(image, 0, 0, width, height, pixels, 0, width).grabPixels()

} catch (InterruptedException ex) {

Logger.getLogger(ImageUtils.class.getName()).

log(Level.SEVERE, null, ex)

}

return pixels

}

资源来自:

http://blog.csdn.net/chief1985/article/details/2229572