cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

OpenCV3.1から標準で使えるようになった画像フォーマットWebPのスレッド処理を有効化する方法

(メモ)
C:\workspace\opencv\sources\3rdparty\libwebp\enc\config.c
内の
int WebPConfigInitInternal(WebPConfig* config,
WebPPreset preset, float quality, int version) {
if (WEBP_ABI_IS_INCOMPATIBLE(version, WEBP_ENCODER_ABI_VERSION)) {
return 0; // caller/system version mismatch!
}
if (config == NULL) return 0;

config->quality = quality;
config->target_size = 0;
config->target_PSNR = 0.;
config->method = 4; // 1-6, 2 (Low Quality, High Speed) or 6 (High Quality, Low Speed) is best.
config->sns_strength = 50;
config->filter_strength = 60; // rather high filtering, helps w/ gradients.
config->filter_sharpness = 0;
config->filter_type = 1; // default: strong (so U/V is filtered too)
config->partitions = 0;
config->segments = 4;
config->pass = 1;
config->show_compressed = 0;
config->preprocessing = 0;
config->autofilter = 0;
config->partition_limit = 0;
config->alpha_compression = 1;
config->alpha_filtering = 1;
config->alpha_quality = 100;
config->lossless = 0;
config->image_hint = WEBP_HINT_DEFAULT;
config->emulate_jpeg_size = 0;
config->thread_level = 1; // 0 or 1
config->low_memory = 0;

...(略)...
}
return WebPValidateConfig(config);
}

もちろんqualityと同じようにmethod, thread_levelもOpenCVのインターフェースを整えて外から呼べるようにしてもよい。

C:\workspace\opencv\sources\modules\imgcodecs\include\opencv2\imgcodecs\imgcodecs_c.h
C:\workspace\opencv\sources\modules\imgcodecs\src\grfmt_webp.cpp
あたりを参照のこと。

OpenCVのWEBPはバージョン3で、AVXを使用してないのでほのかに遅い。。。

[1] WebP入門
[2] WebPの画質とファイルサイズを評価する|サイバーエージェント 公式エンジニアブログ
[3] http://static.googleusercontent.com/media/www.webmproject.org/ja//media/pdf/udpsample.pdf WEBMを使ったビデオ会議のサンプル(古い)
[4] CMake プロジェクトの C++ アプリで webp 形式の読み書きに libwebp で対応することはじめ - Qiita
[5] WebP Advanced API の使い方 - Qiita

[6] GitHub - konlil/libbpg-0.9.4: Build bpg library via Visual Studio 2012. C99 codes have been modified to C89

今日の本文

春です。起きましょう。