2016-05-01 11 views
1

png黒/透明マスクを使用してjpg画像をマスクしようとしていますが、エイリアシングとボーダーブラーが原因で、元のjpgのPython Pillow(またはPIL)でJPGのPNGマスク領域を増やす

タスクによってグラフィカルな精度が要求されないため、これはマスクされた領域を数ピクセルだけ増やすことで簡単に解決できます。

たとえば、マスクされた領域が100pxの中心の円を許可する場合、単に円をあるピクセルだけ「伸ばす」と問題を解決できます。

これを枕で実現する方法はありますか?

+0

:他の色がとても

似たような許されません。 –

+0

悲しいことに、私は拡張機能/侵食機能を見つけられませんでしたが(しかし、とにかく解決策が見つかりました。 – Stormsson

答えて

1

解決策が見つかりました。私はそれを書き留めて、必要に応じて他の人に恩恵を受けることができるようにします。1)マスクにガウスぼかしを適用します。これは)陰

1Bとの境界を「展開」

2必要な場合にのみ、黒/白の色に変換する)閾値に基づいて黒または白の各ピクセルを変換する変換を適用します。私は枕を知らないが、あなたはそこにいくつかの形態の機能を見つけることができれば、 `dilate`または` erode`はおそらく使用するものであろう

blackThreshold = 128.0 
img = img.filter(ImageFilter.GaussianBlur(radius=3)) 
r,g,b,a = img.split() # supposing to have a RGBA PNG 
gray = Image.merge('L',(a,)) # 
gray = gray.point(lambda x: 0 if x<blackThreshold else 255) 
関連する問題