void whitening() {
Mat image = imread("test.jpg",IMREAD_GRAYSCALE);
double mean, stddev;
Mat temp_m, temp_sd;
meanStdDev(image, temp_m, temp_sd);
mean = temp_m.at<double>(0, 0)/255.0;
stddev = temp_sd.at<double>(0, 0)/255.0;
Mat temp_image( image.rows, image.cols, CV_64F);
for (int i = 0; i < image.rows; i++)
for (int j = 0; j < image.cols; j++) {
double pixelVal = image.at<uchar>(i, j)/255.0;
double temp = (pixelVal - mean) / stddev;
temp_image.at<double>(i, j) = temp;
}
double max, min;
minMaxLoc(temp_image, &min, &max);
for (int i = 0; i < image.rows; i++)
for (int j = 0; j < image.cols; j++) {
double pixelVal = temp_image.at<double>(i, j);
image.at<uchar>(i, j) = (uchar)round(255.0 * (pixelVal - min) / (max - min));
}
imshow("New Image", image);
waitKey(0);
}
Mat image = imread("test.jpg",IMREAD_GRAYSCALE);
double mean, stddev;
Mat temp_m, temp_sd;
meanStdDev(image, temp_m, temp_sd);
mean = temp_m.at<double>(0, 0)/255.0;
stddev = temp_sd.at<double>(0, 0)/255.0;
Mat temp_image( image.rows, image.cols, CV_64F);
for (int i = 0; i < image.rows; i++)
for (int j = 0; j < image.cols; j++) {
double pixelVal = image.at<uchar>(i, j)/255.0;
double temp = (pixelVal - mean) / stddev;
temp_image.at<double>(i, j) = temp;
}
double max, min;
minMaxLoc(temp_image, &min, &max);
for (int i = 0; i < image.rows; i++)
for (int j = 0; j < image.cols; j++) {
double pixelVal = temp_image.at<double>(i, j);
image.at<uchar>(i, j) = (uchar)round(255.0 * (pixelVal - min) / (max - min));
}
imshow("New Image", image);
waitKey(0);
}