teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

正規化の定義について補足

2021/10/22 10:43

投稿

lime00
lime00

スコア25

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 現在,OpenCVをPythonで動かして,グレースケール画像に対するガボールフィルタを用いたフィルタリングを行なっています.大体の場合は問題なく動作するのですが,フィルタのパラメータによって,ほとんどが白と黒で構成されるような2値化画像に近い結果が出力されます.現在行なっているやり方としては,cv2.getGaborKernelでガボールフィルタのカーネルを用意し,cv2.filter2Dで畳み込みを行うというやり方を取っています.そこでcv2.filter2Dで畳み込みを行う際に,総和演算結果を正規化することで2値化画像が出力されてしまう問題を解決できるのではないかと考えました.
1
+ 現在,OpenCVをPythonで動かして,グレースケール画像に対するガボールフィルタを用いたフィルタリングを行なっています.大体の場合は問題なく動作するのですが,フィルタのパラメータによって,ほとんどが白と黒で構成されるような2値化画像に近い結果が出力されます.現在行なっているやり方としては,cv2.getGaborKernelでガボールフィルタのカーネルを用意し,cv2.filter2Dで畳み込みを行うというやり方を取っています.そこでcv2.filter2Dで畳み込みを行う際に,総和演算結果を正規化することで2値化画像が出力されてしまう問題を解決できるのではないかと考えました.ここで言う正規化とは,総和演算結果のうち最も大きい値のピクセルの画素値が255となるようにバイアスを乗じ,それ以外のピクセルの画素値にも同じバイアスを乗じていくことを指します.現在のやり方では,恐らくいくつかの画素における総和演算結果が255以上となっており,頭打ちによって白い部分が発生していると判断し,そのような処理をしたいと考えております.
2
2
  この場合,畳み込みを行う際にcv2.filter2Dに頼らずに,自力で畳み込みを行う方法を取るしかないのでしょうか.または,現在のやり方にいくつかの工夫を加えることで,総和演算結果を正規化することができるのでしょうか.詳しい方よろしくお願いします.
3
3
 
4
4
  出力結果の例

1

画像の詳細情報の記入

2021/10/22 10:43

投稿

lime00
lime00

スコア25

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,8 @@
1
1
  現在,OpenCVをPythonで動かして,グレースケール画像に対するガボールフィルタを用いたフィルタリングを行なっています.大体の場合は問題なく動作するのですが,フィルタのパラメータによって,ほとんどが白と黒で構成されるような2値化画像に近い結果が出力されます.現在行なっているやり方としては,cv2.getGaborKernelでガボールフィルタのカーネルを用意し,cv2.filter2Dで畳み込みを行うというやり方を取っています.そこでcv2.filter2Dで畳み込みを行う際に,総和演算結果を正規化することで2値化画像が出力されてしまう問題を解決できるのではないかと考えました.
2
2
  この場合,畳み込みを行う際にcv2.filter2Dに頼らずに,自力で畳み込みを行う方法を取るしかないのでしょうか.または,現在のやり方にいくつかの工夫を加えることで,総和演算結果を正規化することができるのでしょうか.詳しい方よろしくお願いします.
3
3
 
4
+ 出力結果の例
4
5
  ![出力結果の例](2d60c39008647de57a33f36d8661fad4.png)
6
+
7
+ その際のガボールフィルタのカーネル
5
8
  ![カーネル](12e0acaab16a3f16f98a9645a82749e1.png)