![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
インテルが提供しているOpenCVで画像処理を行う為に画面全体ではなく部分的にもしくは強弱を付けて「ぼかし」をかけたいのですがどの様に行えば良いのか分かりません。部分的に四角く行うにはROIなど使用すれば良いのですが、例えば円形や上下に向けて「ぼかし」が強くなる方法が分からないのです。添付しました画像のようなグラデーションで作成したマスク画像を利用してグラデーション色の強弱で「ぼかし」の強弱を付ける方法などないのでしょうか?どなかた分かる方がいましたらお手数ですがお知らせください。宜しくお願い致します。(OpenCVでは無理であればC++などで再現するサンプルプログラムなど掲載されているサイトなどでも構いません!)
![「OpenCVでマスク処理で「ぼかし」は可」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/1752551_5497dbfee7fa3/M.jpg)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?5a7ff87)
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;
のように最大輝度で除算する必要がありました。
重ね重ね失礼いたしました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?5a7ff87)
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などを使うことくらいしか思いつきません。
こんな情報でも参考になるでしょうか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?5a7ff87)
No.1
- 回答日時:
下記サイトではOpenCVと3x3ガウス フィルタによるぼかし処理(+離散フーリエ変換による高速化)の実装例が紹介されていますが、このフィルタをお手持ちのマスク画像に置き換えるようにすれば良いのでは?
カーネルの各レート(重み)を画像輝度から計算するわけですが、フィルタ画像輝度の総和を事前に求めて、各レートの総和が1となるように正規化する必要があります。
http://iphone.moo.jp/app/?p=955
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 生物学 【理系の知識に詳しい方】人間のアルコール代謝について教えてください。 1 2022/11/06 14:53
- 写真・ビデオ 画像を合成すると片方がぼやけてしまいます 1 2022/09/21 20:42
- CPU・メモリ・マザーボード メモリが使用可能にならない 3 2022/08/13 17:13
- 統計学 統計分析とExcelに詳しい方、何卒よろしくお願いいたします。 6 2022/05/27 10:30
- その他(クラウドサービス・オンラインストレージ) Canva(キャンバ サムネイル作るサイト)での加工について(人物だけ、光沢感あるグラデーション) 1 2023/04/01 22:09
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Photoshop(フォトショップ) 【至急】 ウェブサイトやアプリとかでよく見かける、添付画像のように背景にあるものをぼかしつつ透過する 2 2023/07/17 10:57
- Word(ワード) ワード。オブジェクトの一部分にグラデーションを塗るには 2 1 2022/10/04 16:25
- 飲み会・パーティー お酒が弱い人でも飲み慣れてくれば、お酒に強くなれますか? 9 2022/04/28 18:50
- BTOパソコン PCケースのHDD設置方法につきまして 3 2023/06/08 14:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
背景画像の繰り返しについて
-
vb.net 画像の透過について
-
画像のビット数を変更する方法
-
画像のピクセルデータの取得
-
UWSCについて質問です
-
uwscの画像認識に失敗します。
-
C#で画像を他の画像に貼り付け...
-
パネルに画像
-
VBA シート毎に画像挿入
-
画像の重ね合わせがうまくでき...
-
colorbox.js 画像クリックで閉じる
-
EXCELに貼り付けた画像の位置を...
-
ImageMagickでgif画像の一部が...
-
【Papervision3D】円柱にテクス...
-
Excel ユーザーフォームで表示...
-
VB6でプリントスクリーンを無効...
-
スライドショーの表示秒数につ...
-
UWSC 画像認識で条件分岐
-
ソースのどの部分を変更すれば...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ImageMagickでgif画像の一部が...
-
Pythonでgif画像が上手く作れない
-
こんなことてしますか??
-
【EXCEL VBA】ダブルクリックで...
-
Excel ユーザーフォームで表示...
-
「using Windows」でエラーが出る
-
背景画像の繰り返しについて
-
【WPF】画像の切り替え
-
uwcs のマクロで画像認識をして...
-
uwscの画像認識に失敗します。
-
vb.net 画像の透過について
-
EXCEL VBA 複数のImageコントロ...
-
UWSC「画像が無い場合」
-
gif 画像上の ボタンに リン...
-
VBAのユーザーフォームのイメー...
-
VBA シート毎に画像挿入
-
画像処理したBitmapをピクチャ...
-
UWSC 画像判定と条件分岐について
-
UWSC 画像認識で条件分岐
-
自作の地図をグーグルマップの...
おすすめ情報