gpt4 book ai didi

c++ - OpenCV:16 位灰度图像的归一化结果较弱

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:13 29 4
gpt4 key购买 nike

我想在 16 位灰度图像中拉伸(stretch)对比度。但是 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、64位

最佳答案

是的,直方图均衡化可能是可行的方法。 EqualizeHist不适用于 16 位。所以我会推荐

image.convertTo(image,CV_8U,1./256.);

image.convertTo(image,CV_32F);

其次是

equalizeHist(image,imageEq);

8 位选项是经过验证的,但在截断过程中可能会丢失信息。我还没有为 float 尝试过这个,但我怀疑它最终会在内部截断/分箱,这违背了 float 的目的。

或者,如果你想正确地做到这一点并且不关心运行时/开发时,你可以实现一个 16 位直方图,然后是一个 16 位到 8 位查找表,遵循直方图背后的想法均衡/CLAHE。 (制作累积分布函数,将这个65K vector 直接作为查找表应用到图像上,使结果均匀分布。)

或者如果你想做你自己的 cv::normalize() 版本来给出中心均值和合理的标准差,你可以这样做:

Scalar imMean, imStd;
meanStdDev(image, imMean, imStd);
double a = (1<<16)*(0.25/imStd.val[0]); // give equalized image a stdDev of 0.25
double b = (1<<16)*0.5 - a*imMean.val[0]; // give equalized image a mean of 0.5
imageEq = a*image+b;

关于c++ - OpenCV:16 位灰度图像的归一化结果较弱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186294/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com