ニコン独自のツールとフォトショップには、撮影した画像を開くオプションがあるようです。
しかし、libraws dcraw プロセッサを使用すると、これを理解できません。
これが私の実装です。
CV_EXPORTS_W int load_image(const char * path, cv::Mat & output)
{
LibRaw RawProcessor;
int ret;
#define imgD RawProcessor.imgdata
imgD.params.use_camera_wb = 1;
imgD.params.use_auto_wb = 0;
if ((ret = RawProcessor.open_file(path)) != LIBRAW_SUCCESS)
{
fprintf(stderr, path, libraw_strerror(ret));
return -1;
}
if ((ret = RawProcessor.unpack()) != LIBRAW_SUCCESS)
{
return -1;
}
int check = RawProcessor.dcraw_process();
libraw_processed_image_t *image_ptr = RawProcessor.dcraw_make_mem_image(&check);
output = cv::Mat(cv::Size(image_ptr->width, image_ptr->height), CV_8UC3, image_ptr->data, cv::Mat::AUTO_STEP);
cv::cvtColor(output, output, 4);
}
私が話していることを示すために画像を更新しました。画像は何らかの形で正規化されています。元の画像に明るいマテリアルの広い領域が含まれている場合、画像全体がより暗くなります。生の画像データを読み取って、opencv で独自の方法で正規化または処理できるようにしたいと考えています。
アップデート
コメントに基づいて明るさを調整しましたが、ピクセルの色の値に問題が発生しました。ここで最もよく見られます。
左がlibraw、右がviewnxの結果です。libraw 画像にノイズ カラーが含まれているようです。