PythonのPILを簡単からハードまで

複雑な処理アルゴリズムに到達するには、標準スキームを分析する価値がありますので、開始することをお勧めします。



処理の例では、さまざまな色のセットを持つ画像が使用されます。



画像



開始するには、2つのライブラリモジュールが必要です。



from PIL import Image, ImageDraw
      
      





快適な将来の作業のためのツールをセットアップします。



 image = Image.open('test.jpg') #   draw = ImageDraw.Draw(image) #     width = image.size[0] #   height = image.size[1] #   pix = image.load() #   
      
      





さあ始めましょう



RGB形式の画像を処理します。 PILは、フォーマット1、L、P、RGB、RGBA、CMYK、YCbCr、LAB、HSV、I、Fの使用もサポートしています。



画像のピクセル値は次の形式で設定されます: (x、y)、(red、green、blue)x、yは座標、RGBの数値は0から255の範囲です。つまり、 8ビット画像で作業します。



グレースケール



すべてのカラーパレットが等しい場合、灰色の色合いが表示されるため、3つのポイントすべてで算術平均値を取得する必要があります。



 for x in range(width): for y in range(height): r = pix[x, y][0] #     g = pix[x, y][1] # b = pix[x, y][2] # sr = (r + g + b) // 3 #  draw.point((x, y), (sr, sr, sr)) #  image.save("result.jpg", "JPEG") #   
      
      





画像

わずかなニュアンス
人間の目は、さまざまな方法でさまざまな色のスペクトルを知覚します。 色の知覚は何らかの方法で異なるため、誰もあなたに正確な式を与えることはありませんが、興味があれば、 ここここをもっと読むことができます





反転



反転は、255から現在の色を減算することによって取得されます。



 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] draw.point((x, y), (255 - r, 255 - g, 255 - b))
      
      





画像



グレースケール反転



前述の2つのアルゴリズムを組み合わせて、次のコードを記述できます。



 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] sr = (r + g + b) // 3 draw.point((x, y), (255 - sr, 255 - sr, 255 - sr))
      
      





画像



選択的グレースケール反転



このアルゴリズムの場合、しきい値を決定する必要があります。これは100で使用します。



 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] if (r+g+b)>100: #    100 ,    sr = (r + g + b) // 3 draw.point((x, y), (255-sr, 255-sr, 255-sr)) else: #    sr = (r + g + b) // 3 draw.point((x, y), (sr, sr, sr))
      
      





画像



おわりに



次の記事では、画像処理アルゴリズムにおけるDFSの興味深い可能性を示すだけでなく、画像フィルターを領域に分割することにより、より局所的にアプローチする方法についてお話したいと思います。



All Articles