ページ 11

ぼかしアルゴリズムについて

Posted: 2016年12月20日(火) 12:43
by 14142
コードはまだ書いていない状態です。
アルゴリズムを考えている段階で恐縮ですが、ご意見頂けると幸いです。
C++かpythonで回答頂けると嬉しいです。

Photoshop で切り抜きを行なったとき「ぼかし」の範囲を
指定出来るのはご存知でしょうか?
あれを実装したいというのが私の質問です。

そこで私が実装しようと考えている方法は
画像は切り抜いてあり、切り抜きに含まれていない色のバック画像に
貼り付けられていると仮定します。
1、ラスタ走査でバック画像の色は白、それ以外の色は黒としたマスク画像を作る
2、そのマスク画像にエッジフィルタをかけて輪郭を出す
3、輪郭が残ったマスク画像を再びラスタ走査し、黒色の部分に対応する元画像の部分にあらかじめ決められた範囲(ピクセル数)で平滑化フィルタをかける

いかがでしょうか?
これで上手く実装出来そうでしょうか?
Photoshop はどうやっているのでしょうか?

Re: ぼかしアルゴリズムについて

Posted: 2016年12月20日(火) 12:45
by 14142
補足資料
photoshopのぼかしです。
https://helpx.adobe.com/jp/photoshop/kb/224869.html

Re: ぼかしアルゴリズムについて

Posted: 2016年12月20日(火) 13:13
by たいちう
Photoshopがどうやっているのか判りませんが、
簡単な原理を考えてみました。
説明のため、円で切り抜き、背景色は白固定とします。
(方法が理解できたら応用もできるでしょう)

中心からの距離が100pxまではぼかしなし、
110pxでぼかし完了とします。

100pxの部分では、元の画像が100%、白が0%。
105pxの部分では、元の画像が50%、白が50%。
110pxの部分では、元の画像が0%、白が100%。

pixel単位でこのような処理は実装できますか?
もっと簡単に処理できるライブラリもあるかもしれませんが。