【发布时间】:2023-03-13 07:10:02
【问题描述】:
我想在 16 位灰度图像中拉伸对比度。但是void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() ) 给了我一些更亮的图像,但还是太暗了。
文档:
http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#normalize
说alpha是下限,beta是上限。所以在 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, 64bit
【问题讨论】:
-
您是否尝试过使用任何均衡技术?... 直方图均衡?为什么你只坚持简单的对比度增强?
标签: c++ opencv c++11 image-processing