나는 손가락 이미지 처리 작업을하고 있으며 현재 정규화를 수행하려고합니다.Java의 이미지 정규화
나는이 링크를 Griuale Biometric website에서 연구했습니다.
정규화의 개념은 전체 이미지의 평균 및 분산이 사전 정의 된 값으로 변경되도록 각 픽셀의 강도를 변경하는 것입니다.
어떤 코드 나 자바의 알고리즘을 제안 해 줄 수 있습니까?
편집 : 나는 복용하고
이미지 픽셀의 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);
}
}
이 link과 같은 정규화. 그러나 나는 원하는 결과를 얻지 못하고있다. 누구든지 나를 도울 수 있을까?
충분한 담당자가 있어야합니다. SO가 코드 팩토리가 아니며 모호한 질문이 아님을 알기 위해 -1 –
SO가 사람이 운영하는 google.com이 아닙니다. –
@AndrewThompson 질문을 업데이트했습니다. –