
縁側をご利用いただく際のルール&マナー集を用意いたしました
ユーザーの皆様に楽しくご参加いただけるよう、主に投稿時の注意点などをまとめています。
ご投稿の前には必ずご一読をお願いいたします。詳しくはこちら⇒「縁側 ルール&マナー」
紹介文
所有しているEFマウント(アダプタ経由除く)レンズについて
雑多 気まま 勝手に寸評してみます
ええー!とか そうそう 思ったら書き込んで下さい

書くところがない表にスレたてると色々面倒だし
添削も面倒なのでここに書いちゃいます(笑)
レンズの話じゃなくてすいません
スレたてしても何なんでここに書いちゃう
1.まず入れ物
キヤノンのRAWってまず入れ物はTIFFです
入れ物って何かってことなんですけど
それを説明するにはまず「ファイルって何?」ってところから
ファイルっていうのは0と1のカタマリでしかありません
これじゃあ何が何だかわからないのでルールを決めます
例えばDPPに間違ってテキストファイルとか読ませて
CR2だと勘違いして展開されると大変なんで
頭の2バイト(0か1かが16個)の0000000000000000だったら
CANONのRAWだとか決めておきます
ちなみに0と1だけだと大変面倒なので普通16進数で話したりします
16進数なので0123456789ABCDEFと行ってFまで行ったら
繰り上がりです
で実際にはCR2はTIFFなのでまず最初の2バイトが「4949」
次は「002A」って決まってます(16進数)
さて頭4バイトが固定で次に何が書いてあるかって言うと
最初の「IFD」の場所がどこなのか書いてあります
4バイト分でその場所が書いてあるわけです
いわゆるアドレスってやつです
IFDとはImage File or Directoryのことで
EXIFみたいに「何が」「いくつ」というものが
いくつかセットになったカタマリです
ここまで(4949と002Aと最初のIFDのアドレス)をヘッダと言ってます
というわけで最初のIFDの場所に飛びます
例えば最初のIFDの場所が「0010」ならば
(16進数なので)17バイト目が最初のIFDの頭です
最初のIFDまで行ったらIFDの構造どおりに読み取っていきます
まず最初の2バイトに「タグ」が何個あるかが書いてあります
タグとは正にEXIFみたいに「F値 が 16」とか
そういう一つのカタマリです
実際には最初の2バイトでタグ名(番号)
次の2バイトでデータの型
次の4バイトでデータの長さ
次の4バイトが値
ということになっています
そしてIFDの最後には次のIFDのアドレスが書いてあります
なのでこの構造を繰り返すことでいくらでも情報を詰め込むことが
出来るわけです
さて肝心なのはタグの中身なんですが
これは何番が何かが決まっています
色んなものがあるんですがここではRAWの話なので肝心なところだけ
お話します
『タグ「273」StripOffset』これが肝心のRAWデータそのもののありかです
(16進数で「0111」です)
「RAWデータそのもの」というのはホワイトバランスだの
幅だの高さだのとかの付帯情報ではなく
RがいくつGがいくつBがいくつという実際の画素情報という意味です
StripOffsetの値(Value)に直接RAW本体が入ってるわけじゃありません
またまた「場所」が記載されてます
というわけでその場所に行ってようやく「RAW」にたどり着きます
2.RAW本体
さてこっからは自分も正確にはわかってません(笑)
先ほどの場所に何が入っているかだけ説明します
まず基本的にCANONのRAW(本体)は可逆圧縮されています
可逆圧縮といっても色々ありますよね
ZipだとかLZHだとか
CANONの場合はLosslessJpegというコーデックで圧縮されています
でじゃあそれで解凍すればいいかっていうとそう単純でも無い
まずRAW本体自体がいくつかに分割されています
恐らく読み出しチャンネル数で分割されているのでは?といわれています
でどのように分割されているかが先ほどの「タグ」のうち
「C640」に書かれています
で値(Value)は
分割数/分割後の幅ピクセル数/分割で半端がある場合は半端のピクセル数
という風になっています
3.まとめ
というわけでキヤノンのRAWをデコードするには
1.まずRAWの場所を見つける
2.分割数にしたがってロスレスJpegを取り出す
(他にも実際にはRAWの幅とか深度とかも当然必要ですのでタグからとります)
3.そのロスレスjpegを展開する
とこれだけやって取り出せるのはもちろんCFAデータ(カラーフィルタアレイ)
つまりRGGBのままのデータでまだ全然画像じゃありません
これをいわゆる補間したりホワイトバランスをあてたり
なんやかんやしてやっと画像となります
4.でっていう
まことしやかにRAWにNRとか色々言われてますが
この程度の構造を理解していれば
RAWにNRかけてるのでは?と疑うのは無理があるよなーと言いたくなる
はずだと思います
NRをかけるためにはわざわざ一回展開してぜーーんぶやってから
バイラテラルだかトリラテラルだか重み付けしつつボカす的なことをやって
それをさらに「わざわざRAWの形に戻す」ってことになります
(実際に静的に画像化したところで保存する必要は無いけど
計算の中身としてはそうなる)
なのでRAWにNRをかけるなら少なくともlosslessjpeg圧縮をかける前の段階で
GならGという風に(補間によって導きだされた仮想のGではない)
飛び飛びの画素どうしで何かしなくてはいけないと思います
そう考えるとハード側のなんらかの手助け無しにはやれないんじゃないか?
と思えます
そこで一つ思い浮かぶのが「カラムAD変換」です
SONY(NIKON)のCMOSで採用されているこの方式ですが
縦横一方読み出した段階で量子化されています
なのでCFAの並びにする前に手を入れやすいのは間違いなく
逆に言えばそういうことが出来ることに絶大なメリットがあるというのが
そもそものこの方式のメリットの一つなんじゃないかとなーと
2012/4/5 17:35 [197-70]


BABY BLUE SKYさん初めまして。
このスレを見て、前から気になっていた"DCRAW"のソースを見てみました。
詳細は全く理解できていませんが、DNGとCR2が同じようなルーチンを使って
デコード?しているみたいでしたが、作者も"完全ではないけど、DNGとCR2には十分"
みたいなことを言ってるようでした。
ロスレスJPEGのエンコード/デコードエンジンがどこかに落ちてるとRAW現像ソフトの
自作で色々と楽しめそうなのですが・・・
余談:
NETで探す範囲では、この辺りは外国語が当たり前になってきて結構大変だなと
思っています。
そーいえば、"DCRAW"はLinuxベースのソースなのでWinに持ってくるのはメンドーだ
とか、素人プログラマがやりもしないのに妄想しています。
2012/11/23 21:58 [197-74]


この掲示板の新着スレッド

番号 | タイトル | 返信数 | 最終投稿日時 |
---|---|---|---|
[197-70] | キヤノンのRAWとかについて | 1 | 2012年11月23日 21:58 |
[197-31] | EF35mmF2 EF28mmF2.8 EF24mmF2.8 | 5 | 2011年2月21日 20:58 |
[197-18] | EF200mmF2.0 | 4 | 2011年11月23日 16:00 |
[197-17] | EF180mmF3.5マクロ | 0 | 2010年3月29日 23:19 |
[197-16] | EF135mmF2.0 | 2 | 2011年9月4日 01:09 |
[197-15] | EF100mmF2.8ISマクロ | 2 | 2011年6月12日 16:40 |

