У меня есть приложение сканера отпечатков пальцев, которое берет данные изображения пальцев с устройства.Бинаризация изображения фингерпринта
Теперь я пытаюсь бинаризовать изображение.
Я Использование Otsu's algorithm для бинаризации изображения, т.е. значения пикселя 0 или 255.
Порог рассчитывается примерно 160, используя тот же алгоритм. Вот мой код:
public static byte[][] binarizeImage(BufferedImage bfImage){
final int THRESHOLD = 160;
int height = bfImage.getHeight();
int width = bfImage.getWidth();
byte[][] image = new byte[width][height];
for(int i=0; i<width; i++){
for(int j=0; j<height; j++){
Color c = new Color(bfImage.getRGB(i,j));
int red = c.getRed();
int green = c.getGreen();
int blue = c.getBlue();
if(red<THRESHOLD && green<THRESHOLD && blue<THRESHOLD){
image[i][j] = 1;
}else{
image[i][j] = 0;
}
}
}
return image;
}
Но полученное изображение не нужной продукции.
Может кто-нибудь помочь мне с этим.
Вы не должны использовать значения '255' и' 0 'вместо '1' и' 0'? Также вы можете применить порог в каждом канале отдельно (это действительно зависит от того, как вы используете результирующий 'byte []'). [Эта вики] (http://www.labbookpages.co.uk/software/imgProc/otsuThreshold.html) имеет демонстрационную версию java, возможно, она помогает –
У вас есть http://stackoverflow.com/questions/ 18503412/преобразовать буферизацией-изображение-к-2d-байт-массив-с-же-данные? – haraldK