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の興味深い可能性を示すだけでなく、画像フィルターを領域に分割することにより、より局所的にアプローチする方法についてお話したいと思います。

Source: https://habr.com/ru/post/J451074/


All Articles