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
は、αが下限とベータ上限であると述べています。したがって、16ビットイメージの場合、私は0を期待し、65535.0は正しい値です。私は研究を行いました。ほとんどの答えは、アルファとベサが正規化された画像で最小値と最大値であることを指摘しました。
#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を与える。
アルファ値とベータ値は16ビット画像に適していますか? 私はopencvで新しくなり、助けが得られました。私が使用
:opencv3.1を、VisualStudio2015、W10は、64ビット
ヒストグラム均等化を使用しましたか?単純なコントラスト強調をしているのはなぜですか? – rayryeng