私は指の画像処理に取り組んでおり、現在は正規化を行いたいと考えています。
Griuale Biometric Web サイトでこのリンクを調べました。
正規化の考え方は、画像全体の平均と分散が事前定義された値に変更されるように、各ピクセルの強度を変更することにあります。
私を助けることができるJavaのコードまたはアルゴリズムの例を教えてください。
編集:
私は画像の正規化のために画像のピクセルMEAN
をVARIANCE
考慮しています:
これが私のコードです:
public class NormalizeHistMeanVariance {
private static BufferedImage original, normalize;
public static void main(String[] args) throws IOException {
final int N = 256; // Number of graylevels
final int M = 250; // Max value in histogram for displaying purposes
int nrows, ncols, size, in_img[][], out_img[][];
int i, j, max, maxgray;
double hist[] = new double[N], norm, mean, var, tmp;
String f1 = "E:/single.jpg";
String f2 = "E:/normImg";
File original_f = new File(f1);
original = ImageIO.read(original_f);
Histogram histogram = new Histogram(original);
in_img = histogram.getPixels(original);
nrows = in_img.length;
ncols = in_img[0].length;
size = in_img.length * in_img[0].length;
// Compute average gray and histogram
for (i = 0; i < N; i++)
hist[i] = 0;
mean = 0;
for (i = 0; i < nrows; i++) {
for (j = 0; j < ncols; j++) {
hist[in_img[i][j]]++;
mean += in_img[i][j];
}
}
mean /= size;
System.out.println("Mean graylevel = " + mean);
// Compute variance
var = 0;
for (i = 0; i < nrows; i++) {
for (j = 0; j < ncols; j++) {
tmp = in_img[i][j] - mean;
var += tmp * tmp;
}
}
var = Math.sqrt(var / (size));
System.out.println("Variance = " + var);
max = maxgray = 0;
for (i = 0; i < N; i++) {
if (max < hist[i]) {
max = (int) hist[i];
maxgray = i;
}
}
System.out.println("Max count " + max + " (graylevel = " + maxgray
+ " )");
// Normalize to M for better display effect
norm = (double) M / maxgray;
System.out.println("Norm = " + norm);
out_img = new int[nrows][ncols];
for (int x = 0; x < in_img.length; x++) {
for (int y = 0; y < in_img[0].length; y++) {
out_img[x][y] = (int) (in_img[x][y] * norm);
}
}
normalize = ImageUtils.CreateImagefromIntArray(out_img);
writeImage(f2);
}
private static void writeImage(String output) throws IOException {
File file = new File(output + ".jpg");
ImageIO.write(normalize, "jpg", file);
}
}
私が欲しいのは、このリンクのような正規化後の滑らかな画像です。しかし、私は望ましい結果を得ていません。誰でも私を助けることができますか?