
インテルが提供しているOpenCVで画像処理を行う為に画面全体ではなく部分的にもしくは強弱を付けて「ぼかし」をかけたいのですがどの様に行えば良いのか分かりません。部分的に四角く行うにはROIなど使用すれば良いのですが、例えば円形や上下に向けて「ぼかし」が強くなる方法が分からないのです。添付しました画像のようなグラデーションで作成したマスク画像を利用してグラデーション色の強弱で「ぼかし」の強弱を付ける方法などないのでしょうか?どなかた分かる方がいましたらお手数ですがお知らせください。宜しくお願い致します。(OpenCVでは無理であればC++などで再現するサンプルプログラムなど掲載されているサイトなどでも構いません!)


No.3ベストアンサー
- 回答日時:
No.2の追記ですが、先ほどの疑似コードは、
OutputImage[i][j].R = (SourceImage[i][j].R * (255 - MaskImageBrightness[i][j]) + UniformFeatheredImage[i][j].R * (MaskImageBrightness[i][j])) / 255;
OutputImage[i][j].G = (SourceImage[i][j].G * (255 - MaskImageBrightness[i][j]) + UniformFeatheredImage[i][j].G * (MaskImageBrightness[i][j])) / 255;
OutputImage[i][j].B = (SourceImage[i][j].B * (255 - MaskImageBrightness[i][j]) + UniformFeatheredImage[i][j].B * (MaskImageBrightness[i][j])) / 255;
のように最大輝度で除算する必要がありました。
重ね重ね失礼いたしました。

No.2
- 回答日時:
No.1の回答者ですが、「画面全体ではなく部分的にもしくは強弱を付けて」ということなので、No.1の方法だけでは一様なぼかし処理でしかないですね。
申し訳ありません。PhotoshopやGIMPで、マスク画像のチャンネルを8bppの選択範囲として読みこんで、選択範囲内にぼかしフィルタをかける処理と同じものでしょうか?
だとすれば、下記のようなアルゴリズムが最も単純かと思われます。
1. 任意の強度で、まず画像全体に対して一様にぼかしをかける。
2. 元画像の各ピクセルと、一様ぼかし画像の各ピクセルを合成する際に、マスク画像の各ピクセルを重みとして利用する。
下記は入出力画像が同じサイズのRGBカラー画像、マスク画像が同じサイズの8bitグレースケール画像だと仮定した場合の疑似コードです。
OutputImage[i][j].R = SourceImage[i][j].R * (255 - MaskImageBrightness[i][j]) + UniformFeatheredImage[i][j].R * (MaskImageBrightness[i][j]);
OutputImage[i][j].G = SourceImage[i][j].G * (255 - MaskImageBrightness[i][j]) + UniformFeatheredImage[i][j].G * (MaskImageBrightness[i][j]);
OutputImage[i][j].B = SourceImage[i][j].B * (255 - MaskImageBrightness[i][j]) + UniformFeatheredImage[i][j].B * (MaskImageBrightness[i][j]);
Photoshopなどではこんな単純なことはやっていなくて、もっと最適化された高速なアルゴリズムで実装されているのだと思いますが、僕にはせいぜいSSEなどを使うことくらいしか思いつきません。
こんな情報でも参考になるでしょうか?

No.1
- 回答日時:
下記サイトではOpenCVと3x3ガウス フィルタによるぼかし処理(+離散フーリエ変換による高速化)の実装例が紹介されていますが、このフィルタをお手持ちのマスク画像に置き換えるようにすれば良いのでは?
カーネルの各レート(重み)を画像輝度から計算するわけですが、フィルタ画像輝度の総和を事前に求めて、各レートの総和が1となるように正規化する必要があります。
http://iphone.moo.jp/app/?p=955
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel ユーザーフォームで表示...
-
HP上で画像をUPできるよう...
-
EXCEL VBA 複数のImageコントロ...
-
スマホでサイトの画像を長押し→...
-
C# 画像ファイルの更新
-
動画像から平均画像を作成する方法
-
【EXCEL VBA】ダブルクリックで...
-
ロールオーバが遅い
-
C#で画像を他の画像に貼り付け...
-
8bit(256色)グレースケール画...
-
UWSCでループ処理がうまくいき...
-
UWSCの色判定
-
gif 画像上の ボタンに リン...
-
uwscの画像認識に失敗します。
-
UWSC「画像が無い場合」
-
HTMLで画像をポップアップで表...
-
UWSCの画像認識と条件分岐につ...
-
auガラケーのみ表示されない画...
-
「using Windows」でエラーが出る
-
画像
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景画像の繰り返しについて
-
EXCEL VBA 複数のImageコントロ...
-
【EXCEL VBA】ダブルクリックで...
-
画像のビット数を変更する方法
-
「using Windows」でエラーが出る
-
UWSC 画像判定と条件分岐について
-
VBAのユーザーフォームのイメー...
-
uwcs のマクロで画像認識をして...
-
Excel ユーザーフォームで表示...
-
UWSCでループ処理がうまくいき...
-
画像のピクセルデータの取得
-
UWSC 画像認識で条件分岐
-
C#で画像を他の画像に貼り付け...
-
uwscの画像認識に失敗します。
-
画像処理したBitmapをピクチャ...
-
決められた4つの座標をランダム...
-
gif 画像上の ボタンに リン...
-
スマホでサイトの画像を長押し→...
-
vb.net 画像の透過について
-
UWSC「画像が無い場合」
おすすめ情報