2017-12-01 5 views
4

私は、RGBカラーモデルがどのように特定の色を作成するか(あるいは実際にそうであることを説得するために)どのように働くかを示しています。だから、私は写真を撮り、それぞれのピクセルをRGB表現に変換して、単一の色付きピクセルの代わりにズームインすると、RGBカラーを見るようにしたい。画像をRGB「ドット」に変換するツールはありますか

私はこれをやったことがありますが、変換された画像は元の画像より洗い流されているか、暗いです(少し不便ですが、私がもっと似ているともっと強力になると思いますオリジナル)。ここで

は、「ズームアウト」二つの絵は、以下のとおりです。ここで Liko Zoomed Out

は、変換画像のRGBアーティファクトを見せ始め、「中ズーム」です:

Like Medium Zoom

そして、ここれます個々のピクセルを明確に見ることができるようにズームインした画像 RGBの正方形:

Like Zoome In

ピクセルを囲む一定の色に気づくでしょう。これは画像の平均RGBです。私はあなたが個々のピクセルを見ることができるようにそこに置いた(そうでなければ、赤/緑/青の色調の行/列を見るだけである)。そのスペースを完全に取り除くと、イメージはさらに暗くなり、白に置き換えると、イメージが薄くなります(ズームアウトすると)。

このように表示すると、それが暗くなる理由がわかります。「純粋な赤」には完全に黒色の青と緑が表示されます。ある意味では、完全に赤い絵を撮るとしたら、それは本質的に元の1/3の明るさになります。

だから私の質問は次のとおりです。

1:すでにこの(または似たような)を行う利用可能なツールがありますか?

2:変換された画像をオリジナルに近づける方法に関するアイデアはありますか?

2番目の質問では、当然ながら、「RGBピクセル」(各四角形の3つの横縞)の明るさを増やすことはできますが、いくらですか?私は確かにRGB intsに3を掛けることはできません。私を補うために背景色を調整する方法があるのだろうか?それとも、各写真のために手間をかける必要があるのでしょうか?

+2

それはあなただけのオリジナル1/3光強度のを表示しようとしていることから、助けるが暗い/洗い流さ見ることができません。 255で輝度を飽和させるまでは、3を掛けるのは良い方法です。 –

+1

LCD画面やタブレット上で虫めがねを使ってみましたか? –

+1

これは良い考えです。 (私はRGBを説明するこの方法を意味します) –

答えて

2

あなたはそこだけで一つの小さな問題だ3ですべてを乗じて明るさを維持する可能性が想定する正しかった:画像利用のガンマ補正でのRGB値は、その強度は直線的ではありません。値をガンマ補正し、乗算してガンマ補正を再度行う必要があります。

また、各ピクセルの周りの枠線を失う必要があります。それらの境界線は最終的な画像の7/16を占め、これは補償するには多すぎるものです。私は他のピクセルを90度回転させようとしましたが、その結果には明確なジグザグパターンがありますが、ピクセル境界がどこにあるのかはっきりしています。

イメージビューアでズームアウトすると、ガンマ問題が発生することがあります。多くの視聴者は、サイズ変更時にガンマ補正を行うことを迷惑に掛けません。詳細な説明はGamma error in picture scalingを参照し、最後に提供されたテストイメージを使用してください。全体的なスケーリングをやめ、モニターから単純に後退する方が良いかもしれません。

ここに、Pythonコードとその結果の画像からの切り抜きがあります。

from PIL import Image 
im = Image.open(filename) 
im2 = Image.new('RGB', (im.size[0]*3, im.size[1]*3)) 
ld1 = im.load() 
ld2 = im2.load() 
for y in range(im.size[1]): 
    for x in range(im.size[0]): 
     rgb = ld1[x,y] 
     rgb = [(c/255)**2.2 for c in rgb] 
     rgb = [min(1.0,c*3) for c in rgb] 
     rgb = tuple(int(255*(c**(1/2.2))) for c in rgb) 
     x2 = x*3 
     y2 = y*3 
     if (x+y) & 1: 
      for x3 in range(x2, x2+3): 
       ld2[x3,y2] = (rgb[0],0,0) 
       ld2[x3,y2+1] = (0,rgb[1],0) 
       ld2[x3,y2+2] = (0,0,rgb[2]) 
     else: 
      for y3 in range(y2, y2+3): 
       ld2[x2,y3] = (rgb[0],0,0) 
       ld2[x2+1,y3] = (0,rgb[1],0) 
       ld2[x2+2,y3] = (0,0,rgb[2]) 

enter image description here

+0

境界問題を解決するためにピクセルを交互にすることについての偉大な答えと示唆は優れていました。 – Jared

2

これに多くの時間を費やす必要はありません。その中の1つに情報が少なくても、2つのイメージが同じに見えるようにすることはできません。ズームアウト中に奇妙な方法でイメージをサブサンプルするコンピュータがまだあります。

自分の携帯電話や他の画面で自分自身のために見ることができるように、または異なる倍率で画面の画像を表示できるように、クラスに虫めがねを渡してください。

ソフトウェアに固執する場合は、イメージの解像度を3倍にし、空の行と列を使用しないでください。コントラストを高め、RGBコンポーネントをフルレンジにスケーリングするには少なくとも黒にしないでください。

+1

これは正しい答えです。虫眼鏡。子供が事前に準備した画像を見るのではなく、それを行うことはもっと楽しいでしょう。 –

+1

最近、多くの携帯電話では、虫眼鏡ではなく顕微鏡が必要となるほどの高解像度があります。デスクトップモニタはうまくいくはずです。 –

+0

@CrisLuengoそうだけど(あらかじめ用意された画像について)、私は実際に自分が選んだ画像をダウンロードしてから、この "フィルタ"を使って画像を見て、その画像をRGBの四角で見る。 – Jared

1

背景の拡大画像を保存しないでください。これによりズームアウト時に2つの画像が同じに見えるようになりますが、RGBストリップはズームイン時にはっきりと表示されたままです。

そうでない場合は、画像全体に平均色を使用して同様の強度を保ちますが、洗浄効果は残ります。

中間的な選択肢は、すべての詳細を滑らかにし、それをバックグラウンドとして使用するためにイメージに強いローパスフィルタを適用することですが、最初の方法よりも大きな利点はありません。

enter image description here

関連する問題