この質問のコードを作成する必要があります。
最初に、美しいシーンの乱雑さを除いて、ビネットが単独でどのように見えるかを理解する必要があります。このために、均一に照らされた単色の平面 (日中の白い壁や真っ青な空など) の写真を取得し、「ビネット プロファイル」として使用します。次のビネット プロフィール画像が表示されます。
この画像では、画像の中心に近いピクセルは、中心から離れたピクセルよりも高い RGB 値 (つまり、明るいピクセル) を持っています。画像も白黒であるため、特定のピクセルの赤、緑、青の値は同じです。この画像を変更しないでください。
ステップ 1 のビネット プロファイル イメージをカメラでキャプチャした通常の写真のフィルタとして使用して、ビネットを削除できるようにする必要があります。このためには、写真画像 (ビネット付き) をビネット プロフィール画像で分割する必要があります。周辺減光画像のピクセルの RGB 値はエッジに向かって小さい (暗い) ため、元の画像の対応するピクセルを小さい数で割ると明るくなります。
これらがヒントです
ヒント 1: これには、画像に対してピクセル単位で操作を実行する必要があります。つまり、1 つのステップでそれを行うことはできません。
ヒント 2: 有効な RGB 値は 0 (最も暗い) から 255 (最も明るい) の間であるため、最初の課題は、除算の結果得られる RGB 値を各チャンネルの 0 ~ 255 の範囲内に保つことです。
編集:
サンプルコード:
def runA1(picture): myFile = pickAFile() picture = makePicture(myFile)
myFile2 = pickAFile()
picture2 = makePicture(myFile2)
for x in range(0,getWidth(picture)):
for y in range(0,getHeight(picture)):
px = getPixel(picture,x,y)
color = getColor(px)
color = makeLighter(color)
setColor(px,color)
for x in range(2,getWidth(picture)):
for y in range(2,getHeight(picture)):
px = getPixel(picture,x,y)
color = getColor(px)
color = makeDarker(color)
setColor(px,color)
show(picture2)