C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: 画像のCMYK色調補正について


(過去ログ 109 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■64715 / inTopicNo.1)  画像のCMYK色調補正について
  
□投稿者/ dig (10回)-(2012/12/22(Sat) 10:43:03)

分類:[C#] 

(環境はVS,NET3.5,C#,WinForms)

お世話になります。
画像のCMYK補正を行いたいと思っております。
RGB補正のサンプル、RGBからCMYKへの変換式を利用した補正サンプルは
みつかったものの、誤差があるためかフォトショップなどによる補正結果とは程遠い結果となります。

CMYK補正するにはどのようなプログラムの流れになるのでしょうか?
簡単な方法があったりするのでしょうか?
参考サイトでも構いません。よろしくお願いします。
引用返信 編集キー/
■64718 / inTopicNo.2)  Re[1]: 画像のCMYK色調補正について
□投稿者/ オショウ (53回)-(2012/12/23(Sun) 08:40:39)
> RGB補正のサンプル、RGBからCMYKへの変換式を利用した補正サンプルは
> みつかったものの、誤差があるためかフォトショップなどによる補正結果とは程遠い結果となります。

※ どういう計算式で行ったのか、それが解らないと指摘のしようがありませんヨ!

  CMYK では、各々、0.0〜1.0 の値で表現する為、RGB 各値を256から変換する
  段階でケタ落ちして精度が失われているのだと思います。

  仮に0.0〜1.0の分解能を、256段階相当に小数点以下のケタ数を考慮されてい
  ますか?

以上。
引用返信 編集キー/
■64740 / inTopicNo.3)  Re[2]: 画像のCMYK色調補正について
□投稿者/ dig (11回)-(2012/12/27(Thu) 10:22:40)
No64718 (オショウ さん) に返信
>>RGB補正のサンプル、RGBからCMYKへの変換式を利用した補正サンプルは
>>みつかったものの、誤差があるためかフォトショップなどによる補正結果とは程遠い結果となります。
>
> ※ どういう計算式で行ったのか、それが解らないと指摘のしようがありませんヨ!
>
>   CMYK では、各々、0.0〜1.0 の値で表現する為、RGB 各値を256から変換する
>   段階でケタ落ちして精度が失われているのだと思います。
>
>   仮に0.0〜1.0の分解能を、256段階相当に小数点以下のケタ数を考慮されてい
>   ますか?
>
> 以上。

返信遅れてすいません。
この辺り詳しいようですね。私はちょっとよくわかってないんでよろしくお願いします。

式は一般的な
C = ( 1 - R - K ) / ( 1 - K )
M = ( 1 - G - K ) / ( 1 - K )
Y = ( 1 - B - K ) / ( 1 - K )
K = min( 1 - R, 1 - G, 1 - B )

R = 1 - min( 1, C * ( 1 - K ) + K )
G = 1 - min( 1, M * ( 1 - K ) + K )
B = 1 - min( 1, Y * ( 1 - K ) + K )
でやっておりました。(全doubleまたはdoubleにキャスト済み)

cmykのインクの足し引きは-に15段階、+に15段階で1段階で0.06666...ずつの変化になるように
しています。ちなみに画像自体はRGB画像です。

フォトショップなどでは上記一般式以外の式が使われているのでは?なんていう情報もあったものですから質問してみた次第です。

引用返信 編集キー/
■64741 / inTopicNo.4)  Re[3]: 画像のCMYK色調補正について
□投稿者/ howling (149回)-(2012/12/27(Thu) 10:30:55)
No64740 (dig さん) に返信
> 式は一般的な
> C = ( 1 - R - K ) / ( 1 - K )
> M = ( 1 - G - K ) / ( 1 - K )
> Y = ( 1 - B - K ) / ( 1 - K )
> K = min( 1 - R, 1 - G, 1 - B )
>
> R = 1 - min( 1, C * ( 1 - K ) + K )
> G = 1 - min( 1, M * ( 1 - K ) + K )
> B = 1 - min( 1, Y * ( 1 - K ) + K )
> でやっておりました。(全doubleまたはdoubleにキャスト済み)

横から失礼します。
これ、本当にこのまま使ってますか?
おそらくはソースコード載せた方が良いです。
小数点以下の分解性能の話をしているので、
1って本当に1のままやってるの?とかそういうのが気になります。
(というか、オショウさんのはそういう質問ですよ!)

ではでは。
引用返信 編集キー/
■64742 / inTopicNo.5)  Re[3]: 画像のCMYK色調補正について
□投稿者/ 魔界の仮面弁士 (114回)-(2012/12/27(Thu) 12:40:27)
No64740 (dig さん) に返信
> 誤差があるためかフォトショップなどによる補正結果とは程遠い結果となります。
「程遠い結果」というのが、似た色になるのか、まるで違う色になるのか
文章だけでは分からないので、もう少し情報が欲しいです。

「元の色の値」と「フォトショップ等で補正した値」と「自前で算出した値」が
どの程度違うのか、何色か具体的な例を挙げて頂けますか?



> 式は一般的な
提示の式は、ガンマ補正・キャリブレーションは無視した
いわゆる「近似式」ですね。印刷系と画面表示では色の表現方法が
異なるため、デバイスごとの色調整が必要になることがあります。


> K = min( 1 - R, 1 - G, 1 - B )
これらの式で使われている RGB 値は、0〜255 の byte 値ではなく、
0.0〜1.0 の値となりますが、その点は大丈夫でしょうか。


> でやっておりました。(全doubleまたはdoubleにキャスト済み)
この算出式だと、K が 1.0 だった場合、C,M,Y も R,G,B も
すべて 非数値(NaN)になりそうですが、その点はどうされていますか?
(RGB → CMYK 変換なら、元の RGB 値がオールゼロだった場合、K = 1.0 になります)
引用返信 編集キー/
■64751 / inTopicNo.6)  Re[4]: 画像のCMYK色調補正について
□投稿者/ dig (12回)-(2012/12/28(Fri) 17:48:06)
2012/12/28(Fri) 17:51:09 編集(投稿者)

No64741 (howling さん) に返信
> 小数点以下の分解性能の話をしているので、
> 1って本当に1のままやってるの?とかそういうのが気になります。
> (というか、オショウさんのはそういう質問ですよ!)

無知ですいません。色の分解能とはどうやって求めるのでしょうか?

No64742 (魔界の仮面弁士 さん) に返信
>「程遠い結果」というのが、似た色になるのか、まるで違う色になるのか
>文章だけでは分からないので、もう少し情報が欲しいです。
>「元の色の値」と「フォトショップ等で補正した値」と「自前で算出した値」が
>どの程度違うのか、何色か具体的な例を挙げて頂けますか?

結果についてはなんともいいようがありません。私自身は色調がよくわからないのです。(申し訳ありません。)
私にはたいした色は変わらないように見えるのですが、知り合いによるとなんか違うそうです。
「C足りない。もうちょいY引け...」とかなんとか言われてますけど私には何が違うのかさっぱりです。
加える値を手動で微調整という形でも、知り合い以外の人に配る予定はないので別にいいのですが、
これだと面倒なので、どうにかできないものかなぁと思っている次第です。
コード提示だと長すぎてハイライトついてないと読みにくいので、プロジェクトごとアップロードしましたのでこちらを見ていただけますでしょうか?
アップロード先 http://kie.nu/FkO
式など間違ってますでしょうか?というかこの式本当に使っていいのでしょうか?(リンク先ファイルは1ヶ月以内に消えます)

>ガンマ補正・キャリブレーション・デバイスごとの色調整…
素人の手にはおえないですかね。対象は業務用印刷機なんですよね...。
色調整ぐらいなら簡単にできるんじゃないか?と思っていたのですが、以外に難しいようです。
まだ造ると決まったわけではなく、キャンセルできるのでいいのですが...。

よろしくお願いします。

引用返信 編集キー/
■64762 / inTopicNo.7)  Re[4]: 画像のCMYK色調補正について
□投稿者/ dig (13回)-(2013/01/06(Sun) 14:54:09)
返信ないようですね。
解決はしてないですが、あきらめようと思います。
CMYKのほかにCMYD?なんていうのも出てきてもはや自分の手には負えないようです。

ありがとうございました。
引用返信 編集キー/
■64764 / inTopicNo.8)  Re[5]: 画像のCMYK色調補正について
□投稿者/ howling (150回)-(2013/01/07(Mon) 17:40:23)
No64762 (dig さん) に返信
> 返信ないようですね。

あうあう、年末年始でさっぱり見てませんでした…。年末の某同人イベント(ry

>無知ですいません。色の分解能とはどうやって求めるのでしょうか?
すみません、勘違いさせてしまったみたいですが、
小数以下の分解性能ということです。
こちらのサイトとか、ちょうどそれを書いてあります。

http://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html

とはいえ、そんな誤差の範囲の話なのかなぁ?

式がうんぬんと書いたのは、
1 - Yなどとやっても、1がint型ですし、本当かなぁ?という話でした。
こちらはちょっとソース見させてもらいますね。
(反応遅いかもしんないです。すみません)

色調のレベルになると、正直僕もわかんないです。
サイトで実際にCMYKの色を指定して表示した後に、
デバッグ画面と照らし合わせてみてはいかがでしょうか。
引用返信 編集キー/
■64765 / inTopicNo.9)  Re[6]: 画像のCMYK色調補正について
□投稿者/ howling (151回)-(2013/01/07(Mon) 17:51:07)
No64764 (howling さん) に返信
ざっと見ました。

ColorConverter.ChangeCMYK(drawBitmap, CValue * addValue, MValue * addValue, YValue * addValue, KValue * addValue);

これはintとdoubleの乗算なんですね。doubleで固定した方がいいかな?くらいな感じで、他は大丈夫そうかなぁ?
このaddValueの値が0.06666666なのはなんででしょう?
2 / 30ってことですよね?うーん。
引用返信 編集キー/
■64766 / inTopicNo.10)  Re[7]: 画像のCMYK色調補正について
□投稿者/ howling (152回)-(2013/01/07(Mon) 17:57:59)
No64765 (howling さん) に返信
あ、なるほど。2/30なのは上限が15 または -15で…あれ?0もあるので31個ありますよ?

それと、インク値の上限は0〜100なんですねぇ。
なら、もう手っ取り早く0〜100の値を入れるようにしてあげればおかしくならないのでは?

色調はここで調べるといいかも。
http://www.sarago.co.jp/colorspc.html

多分0.06666〜のが問題だったんだろうなぁ。
引用返信 編集キー/
■64792 / inTopicNo.11)  Re[8]: 画像のCMYK色調補正について
□投稿者/ マイナリ (1回)-(2013/01/09(Wed) 16:52:33)
No64766 (howling さん) に返信

業務用印刷におけるCMYKの調整は、かなりの知識を要します。
これは、ぐぐってみるとお分かりになると思います。

なので、中途半端にアドバイスをすると質問者を却って混乱させる元となりかねませんこと、ご注意ください。
引用返信 編集キー/
■64793 / inTopicNo.12)  Re[9]: 画像のCMYK色調補正について
□投稿者/ howling (155回)-(2013/01/09(Wed) 18:22:07)
No64792 (マイナリ さん) に返信

> 業務用印刷におけるCMYKの調整は、かなりの知識を要します。
> これは、ぐぐってみるとお分かりになると思います。

RGBと違って大変な作業だというのは、調べていて私自身思っています。

> なので、中途半端にアドバイスをすると質問者を却って混乱させる元となりかねませんこと、ご注意ください。

私がこの掲示板の立ち位置を誤解しているかもしれないですね。
よく質問する側の立場としては、何でもいいから情報が欲しいという状態によくなります。
この時、もちろん誤った回答があると逆に混乱してしまう部分はあると思いますが、
それでも「ここかもしれない」という情報だけでも助かると思います。
こうなんじゃない?いや、確認したけれどもこれで正しかった。
そういうのをやっていく場なのかなと、私は認識しています。
もちろん、理解が深い方ほど、「ここなんじゃないか」というのが当たっている事は多くあり、
それがあたかも回答ではなく解答となってしまいがちですが、
必ず解答に繋がる答えでないといけないというのであれば、
それはこんな掲示板などではなく、仕事として請け負うべきかなと。

ただ、発言自体に責任はあるべきだと思っています。
結果的に嘘を書いていたのであれば謝るべきでしょうし、正すべきでしょう。
そのくらいの考えです。

ズレているようであれば、やはり私は回答すべきではないのでしょうね。
申し訳ありません。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -