問題タブ [srgb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
colors - HSL との間の linearRGB 変換
linearRGB カラー (sRGB カラーではない) から HSL を取得する方法を知っている人はいますか? 多くの sRGB<->HSL 変換を見てきましたが、linearRGB<->HSL については何もありません。マイナーな調整を加えた基本的に同じ変換であるかどうかはわかりませんが、これについて誰かが持っている洞察をいただければ幸いです.
線形 RGB は、sRGB を線形化すること ([0,255] を [0,1] にすること) とは異なります。sRGB との間の線形 RGB 変換はhttp://en.wikipedia.org/wiki/SRGBにあります。VBA では、これは次のように表されます (線形化された sRGB 値 [0,1] を使用):
Linear RGB 値を標準の RGB_to_HSL ルーチンに送信し、HSL_to_RGB から戻そうとしましたが、うまくいきません。おそらく、現在の HSL<->RGB アルゴリズムはガンマ補正を考慮しており、リニア RGB はガンマ補正されていないため、正確にはわかりません。2つを除いて、これができるという参照はほとんど見たことがありません:
- http://en.wikipedia.org/wiki/HSL_and_HSV#cite_note-9 (番号付きアイテム 10)の参照 。
- オープン ソース プロジェクト Grafx2 @ http://code.google.com/p/grafx2/issues/detail?id=63#c22に関する参考文献では 、寄稿者が Linear RGB <-> HSL 変換を行ったと述べており、 .diff ファイル内の彼のコメントに添付されたいくつかの C コード (実際には読めません :( )
私の意図は次のとおりです。
- sRGB (例:
FF99FF
(R=255, G=153, B=255
)) から Linear RGB (R=1.0, G=0.318546778125092, B=1.0
) に送信- 上記のコードを使用します (たとえば、G=153 は からリニア RGB で取得されます
sRGB_to_linearRGB(153 / 255)
) 。
- 上記のコードを使用します (たとえば、G=153 は からリニア RGB で取得されます
- HSLへ
- 彩度を 350% 変更/変調します。
- HSL->Linear RGB->sRGB から送り返すと、結果は
FF19FF
(R=255, G=25, B=255
) になります。
.getHue
aなどの .NET から利用可能な関数を使用するSystem.Drawing.Color
と、任意の HSL 値の 100% 変調を超える sRGB 空間では機能しないため、sRGB の代わりにリニア RGB を送信する必要があります。
c++ - sRGBをCIELAbに、CIELabをsRGBに効率的に変換するにはどうすればよいですか?
sRGBをCIELabに、またはその逆に変換する方法がわかりません。お願い助けて。с++コードで望ましい
colors - EXIFToolを使用してsRGB画像を作成しますか?
sRGB、ICCプロファイル、exiftoolについて質問したいのですが。
exiftoolを使用して、sRGBプロファイルを画像に埋め込むことができることがわかりました。これは、Paint.NETで画像を作成し、exiftoolを使用してsRGB ICCプロファイルを埋め込むことができることを意味します...出力ファイルはsRGBになりますか?のように、MACとPC間でカラーマネジメントされていますか?
私はフォトショップを買う余裕がなく、Gimpに夢中ではないので、プロフィールを写真にexiftoolすることで簡単に解決できると思いました。
これが機能するかどうかはわかりませんが(Paint.NETにはsRGBのオプションがないため)、フォトショップでsRGBに画像を保存する(およびプロファイルを埋め込む)のと同じ効果があることを誰かが確認できることを願っています。
colors - sRGB-> CIEXYZ->廃棄輝度の結果をsRGBに変換できるようにする必要がありますか?
ポニー検出器の影の除去を書いています。PNG画像をsRGBからCIEXYZに変換した後、指示に従って輝度を削除します。
表示のために画像をsRGBに変換し直そうとすると、sRGB色域外のRGB値が得られます(255より大きい値が得られます)。これは正常ですか、それともバグを探し続ける必要がありますか?注:XYZに変換し、変更せずに元に戻すと、グリッチは発生しません。
イラスト(左上:オリジナル、左下:赤と青の色相のバイト値の折り返し):
完全を期すために:右上:色の比率、右下:HSVに変換して値を均等化します。
colors - 色間のユークリッド距離を計算するとき、sRGB は L*a*b* よりどれくらい悪いですか?
L*a*b*はそれを行う最良の方法ですが、それに変換するのは複雑で、私は怠け者です。sRGBを直接操作することでどの程度の精度が失われますか?
opengl - 色空間、ガンマ、画像強調
色空間。RGB については誰もが知っています。[0.0,1.0] の範囲で正規化された 3 つの値は、赤、緑、青の色成分の強度を意味します。この強度は線形を意味していますね。
ガンマ。私が理解できる限り、ガンマは RGB カラー コンポーネントを別の値にマップする関数です。これをグーグルで調べてみると、線形関数と非線形関数を見てきました...線形関数はRGBコンポーネントをスケーリングするように見えるため、画像の明るさを調整しているようです。非線形関数は、暗い/明るいコンポーネントを「解凍」しているようです。
現在、さまざまな画像形式をテクスチャとして表示する画像ビューアの実装を開始しています。これらの画像のガンマを変更したいので、フラグメント シェーダーを構築し、テクスチャ化されたクワッドを実行する必要があります。わかりましたが、正しいガンマ補正を決定するにはどうすればよいですか?
OpenGL は、浮動小数点コンポーネントを使用して、線形 RGB 色空間を使用して動作します。実際、これらの値から (特別な浮動小数点精度で) ガンマ補正された値を計算できたので、ガンマ補正された値をクランプした後に表示されます。
まず、ガンマ ランプを決定します。どうすればそれを判断できますか?(分析的に、またはルックアップ テーブルを使用して)
次に、OpenGL 拡張 EXT_framebuffer_sRGB について調査することになりました。これは、拡張EXT_texture_sRGBと非常に関連しているようです。
EXT_texture_sRGB は、textel 値を RGB 線形空間に線形化するために使用される新しいテクスチャ形式を導入します。(脚注1) このようにsRGB色空間を意識してリニアRGB色空間として使っています。
代わりに、EXT_framebuffer_sRGB 拡張を使用すると、心配することなく、線形 RGB 値を sRGB フレームバッファーにエンコードできます。
...
待って、この情報は何のために?sRGB フレームバッファを使用して sRGB テクスチャをロードできる場合は、sRGB 変換なしでそのテクスチャを処理します...なぜガンマを補正する必要があるのですか?
sRGB バッファでも、ガンマをすべて同じように修正できますか? それともしない方がいいですか?明るさとコントラスト: ガンマ補正の前または後に適用する必要がありますか?
情報量が多くて、今迷っています。あなたの誰かがこれらすべての概念を私にもっと説明してくれることを願っています! ありがとうございました。
...
別の質問があります。デバイスのガンマが「標準」の 2.2 と異なる場合、異なるガンマ補正を「累積」するにはどうすればよいですか? 明確かどうかわかりません: モニターのガンマ値が 2.2 の画像の RGB 値が既に補正されているが、モニターのガンマ値が 2.8 の場合、ガンマを補正するにはどうすればよいですか?
(1) 以下は、私が言いたいことを強調するための抜粋です。
sRGB カラー スペースは、薄暗いオフィスで想定される一般的な (非線形の) モニター特性に基づいています。これは、国際電気標準会議 (IEC) によって IEC 61966-2-1 として標準化されています。sRGB 色空間は、おおよそ 2.2 ガンマ補正に相当します。
この拡張機能は、何らかの種類の sRGB フレームバッファ形式を提供したり、sRGB テクスチャでレンダリングされた画像が sRGB 色空間をサポートするデバイスに出力したときに「見栄えが良い」ことを保証したりしますか?
directx - (DirectX9)ブレンド後のsRGB変換
最近、このブログ投稿に出くわしました。ガンマ補正に関するさらに別の投稿で、 D3DPMISCCAPS_POSTBLENDSRGBCONVERT機能フラグの可用性を教えてくれました。
これにより、DirectX9でブレンドした後の適切なsRGB変換が可能になります。
私が理解していないのはそれをどうするかです。デバイスDirect3D9Exデバイスにこの機能を問い合わせることはできますが、サポートされている場合はどうすれば有効にできますか?ブレンディング前とブレンディング後の変換を選択できますか?はいの場合、どのように?
助けてくれてありがとう!
android - ガンマ曲線実験-2.2を1.8の反対に変換しますか?
Motorola Photonは、他の人が「ブラッククラッシュ」と呼んでいるものを展示することで有名です。写真を表示すると、画像の暗い部分の細部のほとんどが黒に平らになります。これまで、ほとんどの人がペンタイルディスプレイでそれを非難してきました。しかし、初めてその効果を見たとき、私は別の考えを思いつきました...「うわー、それは、Windows用にエンコードされた写真が1.8のガンマを使用したときにLinuxとMacintoshで見たのと同じ(悪い)方法に見えますWindowsの2.2"の標準の代わりに。私の理論では、モトローラは、モトローラがiPhone以前のAppleパートナーだったときに書き戻された古いライブラリを使用してPhotonのAndroidを構築しました(または、2.2ではなく1.8ガンマを想定した古いオープンソースコードを入手した可能性があります)。
なぜ私はそんなに確信しているのですか?数日前、古いEpic 4G(Samsung Galaxy S)と新しいPhotonの両方を使用して、同じWebページのスクリーンキャプチャを実行しました。予期せぬことに、Epicのスクリーンキャプチャ.pngは正常に見えましたが、Photonのスクリーンキャプチャ.pngは、私のPCで表示した場合、Photonの画面で表示した場合とまったく同じ悪い外観でした。それを見た瞬間、ガンママッピング1.8-vs-2.2のバグの可能性について以前に考えたことを思い出し、モトローラに見せて、これが修正可能な本当のバグであることを納得させるためのデモアプリを書いてみることにしました。
私がやりたい実験の1つは、明るい領域と暗い領域の両方でダイナミックレンジとディテールが高いJPEG画像を取得し、1.8と2.2の差の基本的に2倍の非標準ガンマに再エンコードすることです。意図的に反対の極値(2.6?)に誤ってエンコードした場合、メタデータにあり、2.2であると言うと、フォトンで表示すると正常に見えます(2.2を1.8にクラッシュさせるのと同じエラーがあるため) 2.6を適切な2.2にクラッシュさせます)。
したがって、2つの質問:
2.2ガンマ画像が1.8であるかのようにデコードされた場合に得られるエラーと等しく、反対のガンマはどれですか?2.6?
ソース画像をその非標準のガンマに意図的に誤ってエンコードする簡単な方法(無料のPhotoshop / gimpプラグイン、JPEGエンコーディングライブラリなど)はありますか?
css - sRGB写真とモニターRGBコンプを使用してWebサイトを開発するためのカラープロファイル戦略
概要
HTML / CSSグラデーション/ブレンドの色がコンプで達成される効果と一致するように、コンプのカラープロファイルを標準化するためのアドバイス/ソリューションを探しています。sRGBカラープロファイルを使用してPSDを取得することが多いため、グラデーション/アイコン/または背景を再作成するために色を選択すると、HEXカラーと結果のCSS/HTMLグラデーションがコンプで提供される元のsRGBグラデーションと一致しません。通常、 PSDカラーと最終結果のCSSカラーをより適切に一致させるモニターRGBカラープロファイルの埋め込みカラープロファイルを破棄します。これは、カラープロファイル間の違いを示す例です。
詳細
苦境は次のとおりです。エクスポートされた画像(JPEG / PNG)はブラウザにロードされたときに正しく表示されるようにsRGBカラープロファイルを保持するため、設計者は埋め込みsRGBカラープロファイルを使用するようにPSDを標準化する必要があります。したがって、CSSで再現できない写真/テクスチャ/ものは、より優れたsRGBプロファイルを備えたJPEG / PNGとしてエクスポートされます(これは理解できる要求です)。
フロントエンド開発者として、 CSSとHTML(画像なし)を使用してコンプに表示される要素を再作成することがよくあります。これには、PSDにあるものとWebサイトにレンダリングされるものの間でHEXカラーを適切に一致させる必要があります。ですから、私はモニターRGBカラープロファイルで標準化して、ブラウザーで実際にレンダリングされるものに近いものを誰もが使用できるようにしたいと思います。
他の誰もがこの問題にどのように取り組んでいるのか興味がありますか?CSSとPNGを組み合わせて効果(特に動的に変更する必要のある効果(サイズ/色相/シェーディング...))を実現するために、画像をsRGBでエクスポートし、CSSグラデーション/シャドウでオーバーレイする場合がよくあります。 sRGB / Monitor RBGが混在しているため、コンプとは微妙に異なります。
回答形式
うまくいけば、私はこの質問を適切に尋ねました-適切な答えはあなたが問題にどのように対処するかについての見通しを与えるでしょう-または(より良い)SCSS sRGB()関数またはRGB/HEXカラーをsRGBに変換する他のアルゴリズムがある場合SASSミックスインに入れます。
c++ - マルチサンプリングでQGLFramebufferObjectでsRGBカラーを使用する
パフォーマンス上の理由から、2D レンダリングと 3D レンダリングを分離しました。QGLFramebuffer はターゲットとしてのマルチサンプリングをサポートしていないため、タイプごとに 2 つの QGLFramebufferObjects がありますGL_TEXTURE_2D
。マルチサンプリング バッファへの描画が完了すると、ピクセル値が解決される「通常の」QGLFramebufferObject にブリットされます。これがレンダー タイプの 1 つまたは両方に対して行われると、バッファは 2D の「レイヤ」を 3D のレイヤにブレンドするシェーダへのテクスチャ入力として使用されます。
私はすべての 2D 作業に QPainter を使用し、QPainter は Qt 型にしかペイントできないため、純粋な OpenGL オブジェクトの代わりに QGLFramebufferObjects を使用することに固執していることに言及する必要があります。
このプロセスは正常に機能しますが、アンチエイリアシングが暗すぎて、ほとんど暗いアウトラインのように見えます。
いくつかの調査を行った後、これは sRGB の代わりに線形色空間を使用することにあることがわかりました (こことここ)。そこで、FBO ブリッティングを有効GL_FRAMEBUFFER_SRGB
にし、すべての FBO のテクスチャ ターゲットの内部タイプを に設定GL_SRGB8_ALPHA8
し、シェーダーでのブレンド計算の前に sRGB->Linear を実行しました (最終出力の前に再び戻ってきました)。
しかし、それは機能していません。明るすぎる、暗すぎる、またはまったく同じに見えます。フレーム全体が暗すぎる/明るすぎる場合はいつでも、色空間の変換に失敗したことが原因であることがわかります. しかし、それがまったく同じに見えるとき - 何が起こっているのですか!?
GL_FRAMEBUFFER_SRGB
状態を有効にするための操作の順序、ブリッティングが色空間に影響を与えるかどうか、およびアンチエイリアシングが正しく見えるようにするためにどの FBO が sRGB にある必要があるかを誰かが説明することで、私は本当にやり遂げることができます。または、私は完全に間違っていますか?これらのマルチサンプリング アーティファクトを引き起こしているのは、まったく別のものですか?