アプリ版:「スタンプのみでお礼する」機能のリリースについて

デジカメで撮ったRAWデータをパソコンで現像してjpegとして書き出すと数十秒ぐらいの時間がかかります。
一方でデジカメ本体でjpeg画像を出すように設定すれば、撮った瞬間すぐに(恐らく1秒以下)jpegを書き出します。1万円ぐらいの安いコンパクトデジカメ、携帯電話のカメラでも同様です。この場合、撮像素子が作り出したRAWデータをカメラ内のマイコン(画像エンジン)でホワイトバランス、色みなどの味付けをして、jpegデータを生成しますよね。

前者が後者よりも時間を要するのは何故でしょうか。情報処理能力は、パソコンのほうがカメラ内のマイコンよりも優れていそうなのに。カメラのマイコン(ハードウェア、ソフトウェア)がjpeg生成に特化して設計されているのでしょうか。現像するためのプログラムに大きな違いがあるのでしょうか。

A 回答 (7件)

ご自身で答えを出しておられますが、専用回路(ハードウェア処理)であることと、後から作業をする場合とで処理に必要な時間は変わります。



もし、デジタルカメラでも後からRAWをJPEGに変換する機能があれば、最低でも数秒の時間が掛かるでしょう。その理由は、補助記憶装置のデータバスが狭いからです。

基本的に、データ処理で最も時間が掛かるのは出力です。特に、主記憶(メインメモリ)から補助記憶装置(フラッシュメモリやハードディスク)に書き出すのに掛かる時間は、CPUから主記憶に書き出すのに掛かる時間の10倍を軽く超え下手をすると100倍単位になることもざらにあります。

そのため、CPUに到達し演算を開始するまでに待たされ、開始してからも、下の記憶装置から送られて来るデータを待ちつつ処理をするため、怖ろしく時間が掛かるようになるのです。

一般に、カメラデバイスはそのデバイスの中に専用のバス回路とASICを備えており、その帯域幅は数ギガ~高性能なら50GB/s(50ギガバイト毎秒)を超えるほどの速度で繋がっています。UltraHD 8K動画などに対応するデバイスだと、凄まじい回路幅(道路で言う車線数)が必要です。
その瞬間のデータをがばっと画像処理回路とエンコーダーが受け取り、瞬時に圧縮を掛けます。

そのため、処理は一瞬で終わります。ただし、書き込みに時間が掛かるため、連射などをすると、バッファメモリの空きの問題と、SDカードなどの速度との兼ね合いで、何枚かの連射で連射が止まるという現象が起きることがあります。このバッファ枯渇と同じ現象を逆転させたものが、PCでも起きると思えば分かりやすいでしょう。

これに加えて、CPUは汎用処理回路であり、特化型ではありません。
また、多くのRAW現像ソフトは自在にユーザー側でパラメーター変更が出来るように設計されており、エンコードに一定のパラメーター値の指定が可能となっています。即ち、間にいくつかのカスタマイズを行う機能がエンコーダーに備わっているのです。

そのため、カメラで処理する場合に比べて、中間関数での処理過程が多く、さらにOSなどホスト制御のロードバランスも行われるため、時間が掛かるようになります。


これは、コンピュータゲーム(パソコンと専用機)の違いでも言われることですが、WindowsやMacOSなどの汎用OSは、どんなハードでも対応していれば動く、ソフトはゲーム、エンターテイメント、オフィス、インターネット問わず使えるといった汎用性が求められます。そのため、自由に設定を変更できる部分が多くあります。
また、プログラミングを容易に行うため、デバイスドライバとの親和性を高めるAPIも深い(デバイスに近い)ものから、浅い(利用者に近い部分)まで様々あります。
専用品では、最初からハードに繋がるデバイスもこれとこれとと決まっていますから、間にかませるプログラムなど端的に言えばハードを制御するものと、アプリケーションの2点でOKです。下手をすれば、それ専用で他にデバイスが繋がったり、アプリケーションが増えることがないカメラ制御SoCなどであれば、ハードに直接キックするだけでも良いのです。

それに対して、CPUで後から処理する場合は、パラメーターの確認、パラメーターに基づいてエンコーダーを起動、中間関数のいくつかをエンコーダーに合わせて最適化、エンコードの開始、ハードディスクなど下位のデバイスの小さな蛇口から大きな樽にデータを移す。大きな樽からエンコーダー(ソフトウェア/CPU)に送り込む。完了したら再び元のディスクに戻すという工程が必要となり、処理時間は相対的に長くなります。

尚、SSDなどを使ったとしても、短縮できる時間は決して多くはありません。







それに加えて専用SoCを搭載しているかどうかも影響します。
    • good
    • 1
この回答へのお礼

ご回答をありがとうございます。専用機の強みですね。データ処理の速度を律するのが演算でなく出力というのは初耳で、意外に感じました。

お礼日時:2014/05/06 20:51

数十秒もかかるのはどんなパソコン/ソフトだろう? なんて思ってしまいますが・・・。



JOEG変換以外でもPCの方が時間がかかる処理、ありますね。専用のハードを持っているのも理由のひとつだと思いますが、処理が違うこともあるのがもうひとつの理由だと思います。カメラメーカの現像ソフトを使っていますが、カメラにもある処理をPCのソフトで行うとき、高速/高画質が選べたりします。高画質は当然時間がかかります。
ほかの処理でもアルゴリズムが違うものもあるでしょうね、PCで行う場合は時間制限がないので時間のかかるより仕上がりのよいアルゴリズムが使えますから。
    • good
    • 0
この回答へのお礼

ご回答をありがとうございます。
速度を取るか、画質を取るかですか。それは初耳です。

お礼日時:2014/05/06 21:18

一言で言えば、データー量の違いです。


JPEGは8bit、RAWは14bit(12bitのRAWもある)。つまり、データー量で64倍の差。

まぁ、ワンショットなら気付かないと思うが、連写の利く一眼レフなどで、バッファフルから、画像処理⇒書き込みとなると、それなりに時間を要します。
方や、最新のノートPCでも、CORE i7に8GB程度のメーモリーを積んだモノなら、変換書き込みに数秒(データー量とソフトによる)ですから、64倍のデーター量差から考え、PC処理の方が遅いとは言い切れません。
    • good
    • 0
この回答へのお礼

ご回答をありがとうございます。高性能なパソコンだと話が変わってくるかも知れません。

お礼日時:2014/05/06 21:21

 ご自分でも書いておられるとおり、パソコンの処理能力がいかに高くても、専用のハードウェアチップの速度には到底かないません。

極めて大きな理由の一つです。

 もう一つ理由があります。
 あなたは、何故、パソコンでRAWの現像処理をしたいと思いましたか?
 カメラのデフォルトの処理又は、カメラで設定できる範疇外のところで調整がしたかったからですよね。
 実は、カメラの専用チップは、撮ってすぐに処理をして格納する。その時間も極めて短い時間内に行わなければ「ならない」という制約の下で作られています。(だって、撮影してから、書き込みに10秒かかりますなんて絶対に言えませんものね。)そのため、必要な演算も、これくらいなら大差なしと省略しているところが多々あります。設定の幅もそれなりに限定されます。そうして、速度を追求しているのです。
 パソコンで、わざわざRAW現像をしようなんて人は、当然、調整の幅も、現像の結果も、そして、操作性も最大限を求めます。「少しくらい時間がかかる程度で済むなら、良い結果を出してください。」というのがスタンスです。勢い、パソコンの処理ソフトは、カメラ内のチップより、多くの処理をする必要にせまられます。

 ハードウェアの速度でも差をつけられ、処理する内容でも差をつけられたら・・・そりゃ、同じ時間で現像しろというのは、やっぱり、かわいそうですよね。
    • good
    • 2
この回答へのお礼

ご回答をありがとうございます。言われてみれば、RAW現像したい時って、多少の時間はかかっても気にしないけれど(命令だけ与えて寝てる時に処理させても良いぐらい)、パラメータは広く弄れる事を求めますね。

お礼日時:2014/05/06 21:12

自分で答えを書いてますね。



簡単に言うと専用プロセッサと汎用プロセッサの違い。

専用プロセッサは特定の処理に特化したもので、一般的に小規模で高速。
汎用プロセッサはあたえるプログラムでなんでもできるがでかくて複雑になり、複雑故に効率がよくありません。

デジカメだと限られた容積のボディに収めなくてはならないし、電力も限られています。
専用プロセッサならどちらにも適している上に高速処理が可能。対してパソコンで使用されている汎用プロセッサ(CPU)はでかくて消費電力も高いうえ発熱も凄い。

さらにパソコンではOSの上でアプリケーションが動くわけですが、その間には.NET Frameworkみたいなミドルウェアライブラリもあるために実行効率は更に悪くなります。それだったらWindows以前のMS-DOSでCPUやメモリを直接操作したほうが昔の非力で安いCPUでもそれなりの速度で処理できるかもしれないww
今のフルスペックWindwosは超肥満児になっているので開発環境は快適になっていても実行環境という点では強力なハードなくして快適な環境を構築することは不可能となってます。
    • good
    • 1
この回答へのお礼

ご回答をありがとうございます。汎用性、開発の容易さを求めた結果、パソコンは複雑になってるんですね。

お礼日時:2014/05/06 20:54

詳しくないですが。



>カメラのマイコン(ハードウェア、ソフトウェア)がjpeg生成に特化して設計されているのでしょうか。

そうですね。PC 並みの汎用的なソフトウェア処理能力を持つCPU をデジカメに使うのは物理的大きさや
消費電力の点で無理なので、ハードウェアエンジンを使います。
(画像処理LSIなど)
こういうの
http://www.kumikomi.net/article/news/2013/09/05_ …
http://www.megachips.co.jp/product/lsi.html
http://img.jp.fujitsu.com/downloads/jp/jed/broch …
    • good
    • 1
この回答へのお礼

ご回答をありがとうございます。こういうリンクは普段見慣れない情報なので、新鮮で面白いです。詳細は分からないけれど、あの小さいチップに知恵と技術が詰め込まれているんですね。

お礼日時:2014/05/06 21:08

私も詳しくは分からないのですが、



PCは、現像のほかにも、様々なソフトが働いており
CPUは色々な処理を同時に並行にやってます。

カメラのマイコンは、画像生成に特化した仕様であり、
PCのCPUのような汎用性はないが、処理が速いのだと思います。
    • good
    • 0
この回答へのお礼

ご回答をありがとうございます。常駐ソフトの有無もパソコンとマイコンの違いですね

お礼日時:2014/05/06 20:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!