Skip to main content
20230517men
Participating Frequently
June 15, 2023
Answered

描画モード「ピンライト」の計算式について

  • June 15, 2023
  • 2 replies
  • 443 views

描画モードの計算式をみていたのですが、ピンライトの計算式でどうしてもわからない箇所があります。
ピンライトの計算式は以下のようなものかと思います。
−−−−−−−−−−−−−−−−
 Top < 128の場合
  (1)Bottom < 255-2*Topの場合:Bottom
  (2)Bottom > 255-2*Topの場合:2*Top
 Top > 128の場合
  (3)Bottom < 2*Top-255の場合:2*Top-255
  (4)Bottom > 2*Top-255の場合:Bottom
−−−−−−−−−−−−−−−−
※TOPは合成色、Bottomは基本色となります。

例えば、
▶ BottomのRGB値が(R:230|G:80|B:80)
▶ TOPのRGB値が(R:100|G:230|B:100)
だった場合、計算式に入れると
R:200
G:205
B:200
となります。

しかし、PhotoshopのRGB値を見ると「Bの値は80」となります。
どなたか分かる方がいたらご教授いただけると幸いです。
※検証画像添付しておきます。
※Rの値も200ではなく199となりますが。。。

This topic has been closed for replies.
Correct answer photoshopperJP

20230517menさん

 

確かピンライトの計算式は以下の式だったと思います。

 

base = bottom/255.0
blend = top/255.0

if blend > 0.5 then:
 Result = Max(base, 2*(blend-0.5))
else:
 Result = Min(base,2*blend)

上記式に

▶ BottomのRGB値が(R:230|G:80|B:80)
▶ TOPのRGB値が(R:100|G:230|B:100)
だった場合、計算式に入れると

R(min(230,2*100)) G(max(80,2*(230-127.5)) B(min(80,2*100))

R = 200, G = 205 B = 80

となり、Photoshopの結果と一致すると思われます。

 

199に関しては、キャッシュで計算している誤差かもしれません。(間違っていたらすみません。)

 

>>>

納得できない場合は、引き続き質問してください。他の人も含めよい知恵をいただけると思います。
よろしくお願いいたします。

>>>

解決したらその回答の「正解」ボタンを押していただけると、フォーラムトップに表示されるようになるので、視認性がよくなり他の方が簡単に同じ問題が起こっても解決しやすくなります。ご協力お願いいたします。

2 replies

photoshopperJP
Community Expert
photoshopperJPCommunity ExpertCorrect answer
Community Expert
June 22, 2023

20230517menさん

 

確かピンライトの計算式は以下の式だったと思います。

 

base = bottom/255.0
blend = top/255.0

if blend > 0.5 then:
 Result = Max(base, 2*(blend-0.5))
else:
 Result = Min(base,2*blend)

上記式に

▶ BottomのRGB値が(R:230|G:80|B:80)
▶ TOPのRGB値が(R:100|G:230|B:100)
だった場合、計算式に入れると

R(min(230,2*100)) G(max(80,2*(230-127.5)) B(min(80,2*100))

R = 200, G = 205 B = 80

となり、Photoshopの結果と一致すると思われます。

 

199に関しては、キャッシュで計算している誤差かもしれません。(間違っていたらすみません。)

 

>>>

納得できない場合は、引き続き質問してください。他の人も含めよい知恵をいただけると思います。
よろしくお願いいたします。

>>>

解決したらその回答の「正解」ボタンを押していただけると、フォーラムトップに表示されるようになるので、視認性がよくなり他の方が簡単に同じ問題が起こっても解決しやすくなります。ご協力お願いいたします。

written by Photoshopperjp 👉 https://photoshopper.hatenablog.com/
20230517men
Participating Frequently
June 23, 2023

ありがとうございます!
すっきりしました!!

199に関しては、誤差っぽいですね。
他の描画モードの計算式でも同じような誤差が生じますので。
助かりました。

silk-m
Community Expert
Community Expert
June 23, 2023

8bit/ch ではグリーンが(左が 8bit 表示、右が 16bit (0~32768) 表示、以下同じ)

合成色が

になりますが、16bit/ch では合成色が

になります。

 

12850 x 2 = 25700 ですから 128.5 で割ると 200 で正確な値になります

 

--Susumu Iwasaki
Ten A
Community Expert
Community Expert
June 15, 2023

条件の50%スレッショルドは各成分ではなくグレー変換値での利用だったかと思います。ですから、Top>128の方が適用されるのだと思います。199は演算誤差ではないかと思います。

20230517men
Participating Frequently
June 22, 2023

返信ありがとうございます。
グレー変換値での利用の場合、Rの計算式は(4)が適用され230になりませんか?
頭が混乱してきまして申し訳ないです。。。