LoginSignup
2
2

More than 5 years have passed since last update.

ofxBlackMagicの色の調整

Last updated at Posted at 2014-12-17

いつも便利に使わせていただいているkylemcdonaldさん作のofxBlackmagicですが、
DeckLinkを使いHD-SDI 1080iにてキャプチャした画面の色が、どうもおかしい、、、(全体的に輝度が低い感じ)

確認すべくMacからHDMIにて出力(モニター設定のカラーはsRGBを選択)
それをBarco ImagePro2にてHD-SDIに変換後、
BlackMagic UltraScopeに入れてみたら、やはり色があっていない。

波形モニタを見ながら、KyleさんのofxBlackMagic内 ColorConversionDeinterlace.cppを
調整しました。
(github わからんので、folkとかなんやら してません、、、あしからず)
```lang:ColorConversionDeinterlace.cpp
unsigned char map1(float value) {

include "ColorConversionDeinterlace.h"

include

unsigned char clamp(int value) {
if(value > 255) return 255;
if(value < 0) return 0;
return value;
}

unsigned char map(float value) {

float outVal = ((value - 16) / (219) * (255));
/*もともとはfloat outVal = ((value - inputMin) / (inputMax - inputMin) * (outputMax - outputMin) + outputMin); これを簡略 

(value - 16)の16はBlackmagicから入ってくる最低値*/

if( outVal > 255 )return 255;
else if( outVal < 0 )return 0;

return outVal;

}

bool yuvReady = false;
unsigned char yuvRed[256][256];
unsigned char yuvGreen[256][256][256];
unsigned char yuvBlue[256][256];

void createYuvLookupTables(){
if(yuvReady) {
return;
}
int yy, uu, vv, ug_plus_vg, ub, vr, val;
for (int y = 0; y < 256; y++) {
for (int v = 0; v < 256; v++) {
yy = y << 8;
vv = v - 128;
vr = vv * 397;
val = (yy + vr) >> 8;
yuvRed[v][y] = map(val);
}
}
for (int y = 0; y < 256; y++) {
for (int u = 0; u < 256; u++) {
for (int v = 0; v < 256; v++) {
yy = y << 8;
uu = u - 128;
vv = v - 128;
ug_plus_vg = uu * 44 + vv * 128;
val = (yy - ug_plus_vg) >> 8;
yuvGreen[u][v][y] = map(val);
}
}
}
for (int y = 0; y < 256; y++) {
for (int u = 0; u < 256; u++) {
yy = y << 8;
uu = u - 128;
ub = uu * 470;
val = (yy + ub) >> 8;
yuvBlue[u][y] = map(val);
}
}
yuvReady = true;
}
//以下は一緒
```
やっていることは、もともと使われていたClampに変わり、mapを制作。
DeckLinkから入って来る色がRGBの255段階で表現すると16から236くらいでした。
これを0-255へマップしています。

またcreateYuvLookupTables()内を波形を見ながら調整しました。
ので、波形合わせにっているので
YUVからRGB変換しているところの数値は、何の後ろ盾もありません。
とにかく波形モニタを見ながら数値調整して行った感じです。

これでDeckLinkでカラーバーをキャプチャした時にほぼしっかり色が出ました。
若干 255段階のローレベルで色のふらつきは出ていますが、概ね 大丈夫そう。

DeckLink付属のソフトウェアでキャプチャすると、色は綺麗に出るので、
きっと、もっとスマートな方法があると思うのですが、、、

ご存知の方いらっしゃいましたら 教えてください。。。。。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2