关于JAVA指纹识别的源码!怎么会是这样的?
来源:互联网 发布:阿里云技术认证acp 编辑:程序博客网 时间:2024/05/01 13:44
前些天在有一个在看J2ME程序开发的时候,无意中想到了手机指纹识别技术,于是就想有没有手机用Java可以实现的代码呢!在网上找了很长时间,看到了一写源码。贴出来大家共同讨论一下,这个是什么意思?
下面是其中的一个类
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.net.*;
import java.util.*;
import java.io.*;
import java.lang.Math;
/**
* Open is an algorithm to open a binary image using a 3x3 kernel using
* erosion followed by dilation.
*
* @author Simon Horne.
*/
public class Open extends Thread {
/**
* Default no-arg constructor.
*/
public Open() {
}
/**
* Method to open a binary image by eroding and then dilating the image
* using the specified kernel.
*/
public static BinaryFast open_image(BinaryFast b, int [] kernel,
int iterations){
int i=0;
b = Erode.erode_image(b, kernel, iterations);
b = Dilate.dilate_image(b, kernel, iterations);
return b;
}
}
第二个类:
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.net.*;
import java.util.*;
import java.io.*;
/**
*ImageXor is an algorithm to apply logical XOR/XNOR between two images
*@author:Judy Robertson, SELLIC OnLine
*@author:Neil Brown, DAI
*@author:Timothy Sharman
*@see code.iface.imagexor
*/
public class ImageXor extends Thread{
//the width of the input images in pixels
private int i1_w;
private int i2_w;
//the width and height of the output image
private int d_w;
private int d_h;
private int[] dest_1d;
private boolean is_colored;
/**
*Constructs a new Image Xor
*@param firstwidth The width of the iorst input image
*@param secondwidth The width of the second input image
*/
public ImageXor(int firstwidth, int secondwidth){
i1_w = firstwidth;
i2_w = secondwidth;
}
/**
*Applies the image XOR operator on the specified image arrays, with the specified offset and scale value
*@param src1_1d The first source image as a pixel array
*@param src2_1d The second source image as a pixel array
*@param XNOR Boolean to indicate wether we should XNOR rather than XOR
*@param width width of the destination image in pixels
*@param height height of the destination image in pixels
*@param oset The offset value
*@param scale The scale value
*@return A pixel array containing the X(N)OR of the two input images
*/
//Bob's image xor algorithm..
/*a) assume the image is grey level (hence RR=GG=BB)
b) use value &0x000000ff to get the BB value
c) do this for both input images
d) apply the operation (eg XOR)
e) add oset and then scale
f) clip to lie from 0 to 255. Call this value 0xCD
g) create int value 0xffCDCDCD
*/
public int [] doXor(int [] src1_1d, int [] src2_1d, boolean XNOR,
int width, int height, float oset, float scale){
int place1 = -1;
int place2 = -1;
int src1rgb = 0;
int src2rgb = 0;
int result = 0;
//Get size of image and make 1d_arrays
d_w = width;
d_h = height;
dest_1d = new int[d_w*d_h];
boolean firstwider = false;
boolean secondwider = false;
int wrap;
if (i1_w > d_w){
wrap = ((i1_w + 1) - d_w);
firstwider = true;
} else if (i2_w > d_w){
wrap = ((i2_w + 1) - d_w);
secondwider = true;
} else {
wrap = 0;
}
//if you know there is no wrap around, you can save yourself some time
if (wrap == 0) {
for (int i=0; i< dest_1d. length ; i++){
src2rgb = src2_1d[i] & 0x000000ff;
src1rgb = src1_1d[i] & 0x000000ff;
/* Due to Java not having unsigned ints, the ~ will always give a
negative result. As we a dealing with only the bottom 8 bits of
the int, I will just mask out the bottom bits. Neil.
*/
if (XNOR) {
result = (int) ((scale * (float)(~(src1rgb ^ src2rgb) & 0xff))+oset);
} else {
result = (int) ((scale * (float) ( src1rgb ^ src2rgb )) + oset);
}
//clip to 0 ... 256
if (result < 0){
result = 0;
} else if (result > 255){
result = 255;
}
//create an int value for dest_1d
dest_1d[i ] = 0xff000000 | (result + (result << 16) + (result << 8));
}
return dest_1d;
}
else {
for (int i=0; i< dest_1d. length ; i++){
//we might need to skip out some pixels which aren't in the overlap area
if ((i %d_w ) == 0 ) {
if ( i == 0 ){
place1 = 0;
place2 = 0;
} else if (secondwider) {
place2 = place2 + wrap;
place1 ++;
} else {
place1 = place1 + wrap;
place2 ++;
}
} else{
place2 ++;
place1 ++;
}
src2rgb = src2_1d[place2] & 0x000000ff;
src1rgb = src1_1d[place1] & 0x000000ff;
/* Due to Java not having unsigned ints, the ~ will always give a
negative result. As we a dealing with only the bottom 8 bits of
the int, I will just mask out the bottom bits. Neil.
*/
if (XNOR) {
result = (int) ((scale * (float) (~(src1rgb ^ src2rgb) & 0xff))+ oset);
} else {
result = (int) ((scale * (float) ( src1rgb ^ src2rgb )) + oset);
}
//clip to 0 ... 256
if (result < 0){
result = 0;
} else if (result > 255){
result = 255;
}
//create an int value for dest_1d
dest_1d[i ] = 0xff000000 | (result + (result << 16) + (result << 8));
}
return dest_1d;
}
}
/**
*XORs the specified input image by the constant, also adds offset
*
*@param src1_1d The input pixel array
*@param constant The constant value to AND every pixel in the input array by
*@param XNOR Boolean to indicate wether we should XNOR rather than XOR
*@param width width of the destination image in pixels
*@param height height of the destination image in pixels
*@param oset The offset value
*@param scale The scale value
*@return A pixel array with the constant value X(N)ORed with every pixel in the input array
*/
public int [] doXor(int [] src1_1d, int constant, boolean XNOR,
int width, int height, float oset, float scale ){
//Get size of image and make 1d_arrays
d_w = width;
d_h = height;
dest_1d = new int[d_w*d_h];
int src1rgb;
int result = 0;
/* Due to Java not having unsigned ints, the ~ will always give a
negative result. As we a dealing with only the bottom 8 bits of
the int, I will just mask out the bottom bits. Neil.
*/
//now do the XOR on the input image
for (int i=0; i< src1_1d. length; i++){
src1rgb = src1_1d[i] & 0x000000ff;
if(XNOR) {
result = (int) (( scale * ((float) (~(src1rgb ^ constant) &0xff))) + oset);
} else {
result = (int) (( scale * ((float) ( src1rgb ^ constant ))) + oset);
}
if (result > 255){
result = 255;
}
if (result < 0){
result = 0;
}
dest_1d[i] = 0xff000000 | (result + (result << 16) + (result << 8));
}
return dest_1d;
}
}
从导入的包可以看出,没有什么特殊的类啊!上面是什么意思?有很多的关键词不理解也没有见到过!有明白这个是做什么的源码的不!提供大家讨论!
- 关于JAVA指纹识别的源码!怎么会是这样的?
- 检测出来的结果怎么会是这样。。
- 真的不明白,怎么会这样!
- 怎么会有这样的代码
- 怎么会有这样的领导啊!!
- 怎么会这样
- 怎么会这样
- 怎么会这样
- 怎么会这样
- 关于指纹识别技术的报道
- 关于Python模块,或许是这样的:
- java是要这样去学习的
- java是要这样去学习的
- Java的学习阶段原来是这样!
- java是要这样去学习的
- gdi+ 在v6.0中按要求设置好了 怎么会出现这样的错误
- 哦,是这样的
- 工作是这样的
- 连老师谈CMMI咨询选择中:咨询师和主任评估师的关系
- oracle10g for as4 install(redhat rhel4上oracle的安装)
- 给ubuntu换上Mac OSX外套
- CreateToolhelp32Snapshot枚举进程
- 有关SQL Server 索引结构及其使用的说明和例子
- 关于JAVA指纹识别的源码!怎么会是这样的?
- php操作注册表
- 模拟农村生育状况的算法
- 我所经历的ERP项目的失败(转)
- swf文件头解析
- 可变参数的应用
- 为什么最近黑客圈内流行以25000欧元(约合32413美元)的高价求购已经停产的一款旧手机诺基亚1100
- 你遇到过开机没反应的现像吗?
- 你参加2009技术英雄大会了吗?