我想在16位灰度图像中拉伸对比度。但void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray())
给我一点亮的形象,但仍然太黑。OpenCV:16位灰度图像的归一化给出了弱结果
文档: http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#normalize
说alpha是下限和β上限。所以在16位图像的情况下,我期望0和65535.0是正确的值。我做了一项研究,大多数答案都指出,alpha和betha是规范化图像中的最小值和最大值。
#include "stdafx.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main()
{
cv::Mat image;
image = cv::imread("darkImage.tif", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_GRAYSCALE);
if (!image.data)
{
std::cout << "Could not open or find the image" << std::endl;
return -1;
}
cv::namedWindow("Original", CV_WINDOW_NORMAL | CV_WINDOW_KEEPRATIO);
cv::imshow("Original", image);
cv::normalize(image, image, 0, 65535.0, cv::NORM_MINMAX, CV_16U);
cv::namedWindow("Normalize", CV_WINDOW_NORMAL | CV_WINDOW_KEEPRATIO);
cv::imshow("Normalize", image);
cv::waitKey();
return 0;
}
Original and Normalized image表明对比度增强是不够的。 ImageJ标准化给了我更好的result。
alpha和beta值是否适合16位图像? 我是opencv中的新成员,任何帮助都是合适的。
我用:opencv3.1,VisualStudio2015,W10,64位
你试过使用任何均衡技术?...直方图均衡?为什么你只是坚持简单的对比度增强? – rayryeng