プロが教えるわが家の防犯対策術!

添付の画像データのシマシマのノイズを python で除去したいです。画像によってシマシマの方向が異なるのですが、自動的に除去できればと思います。
どなたかやり方をご存じの方がいらっしゃいましたら、ぜひとも教えていただければ幸いです。

(プログラミングおよび画像処理のカテゴリにも、同じ質問を投稿しました。)

質問者からの補足コメント

  • ご回答くださった方々、どうもありがとうございます。

    (1)
    画像をアップします。
    十分な解像度で表示されるか、わかりません。

    (2)
    他サイトに投稿したとわかる文面を入れてしまったのは、当方のミスですが、重投稿が禁止されるかどうかはそれぞれのサイトの運営が判断する問題だと思いますので、私でなくそちらにかけ合ってください。

    「画像の電気ノイズ除去のプログラミング」の補足画像1
      補足日時:2023/08/01 08:26
  • 画像をアップします。

    「画像の電気ノイズ除去のプログラミング」の補足画像2
      補足日時:2023/08/01 08:29

A 回答 (5件)

> 先のリンクで示したコマンド



 誰が何のつもりで作ったんだか分からんライブラリのコマンドなんか、知らんがな。効き目がなかったのなら、そりゃ何か違うことをやったのかも。
 画像処理をやろうという人が、自分がよく分かってもいない拾い物だけでなんとかしようとするのは、ドーカと思う。

> 画像を回転させなければならないのでしたら。

2次元フーリエ変換と回転は可換、すなわち、適用する順番を入れ替えても結果は同じです。

それから、median filterのために画像を回転させる? ナンセンスとしか思えんけど。
    • good
    • 0

もし、黄色と青のポッチ2つに興味があるだけなら、こんなもんなんとでもなります。

(お題が単純すぎて手法が絞れないぐらい。)ポッチはどっちもサチってるんだから、まずは極端な閾値処理をやるだけで十分。ノイズの粒がいっぱい残る程度の閾値処理のあとにモルフォロジー変換(openingとclosingの組み合わせ)をやると、ポッチのサイズが保たれる。もちろんmedian filter (サイズは大きめ)でもイケる。あるいは、強く平滑化してから値を粗く量子化し、それからエッジ強調をやるのでも良い。
 しかし、シマシマに特化して処理したい(他はなるべく変えたくない)のであればウィーナーフィルタが良い、という話です。

> 2次元高速フーリエ変換の画像を調べてみましたが、はっきりとしたシグナルは見えませんでした

 見るためには、画像を丸々変換するより、小さい画像に分けてそれぞれやるのがいいでしょう。ま、目立って見えなくたって、ウィーナーフィルタは構成できますがね。
    • good
    • 0
この回答へのお礼

ご返信をどうもありがとうございます。
余裕が出てきたので、ウィーナーフィルタにトライしましたが、別のパターンのノイズが乗って使いものになりませんでした。

僕の理解が正しければ、結局、フーリエ空間でフィルタをかけるのですよね。
縞模様は、縞に沿った方向では空間周波数が極端に小さいですが、それと垂直方向には空間周波数が高いです。ところが、先のリンクで示したコマンドですと、フィルタは xy 方向で定義するので、どちらも高い空間周波数になってしまいます。
なので、典型周波数を高周波に設定する (=リンクの mysize パラメータを小さくする) と、縞模様と、高い空間周波数成分を持つ測定対象の両方に影響が出てしまいます。一方でmysize を大きくすると、フィルタをかける前には目立たなかった、空間周波数の小さなノイズ成分を増幅してしまうように見えます。

画像を回転させなければならないのでしたら。
メディアンフィルタであれば、想定外の空間周波数成分を落としたり増幅したりする心配がありませんので、引き続きそちらを使おうと思います。

それでも、ウィーナーフィルタって、画像処理でよく使うようですね。
引き続き遊んでみようと思います。
お話におつきあいいただき、本当にどうもありがとうございました。

お礼日時:2023/08/01 20:53

> その成分が見えるかどうか



基本的にはそれでOKです。ウィーナーフィルタはデータ自身に基づいて「最適なフィルタ」を推定して、それを適用しよう、という考え方ですから。処理は軽い。古典的な技術なので、図書を探した方がいいかもです。
    • good
    • 1
この回答へのお礼

ご親切なご返信を、どうもありがとうございます。

2次元高速フーリエ変換の画像を調べてみましたが、はっきりとしたシグナルは見えませんでした。縞模様とは別の、ランダムな(=砂嵐のような)ノイズが意外に大きいことが原因のようです。つまり、縞模様として比較的はっきり見えるのは画像として表示しているからで、例えば1つのピクセル行だけに着目して1次元のプロットをつくっても、縞模様のパターンははっきり見えないことがわかりました。

さしあたり、「より原始的な」方法のコードを書いて、いくつかのサンプルで試験し、そこそこうまくいきました。ただし、適切な回転角度を求める処理は大変に重いです。
教えていただいたウィーナーフィルタは大変に興味ぶかいです。引き続き勉強させていただきます。
重ねがさね、本当にどうもありがとうございました。

お礼日時:2023/08/01 13:29

「ウィーナーフィルタ」で検索、かな。


要するに、シマシマは特定の周波数成分が卓越しているので、それを検出して抑えてやるんです。(ノイズなしの原画像がもしシマシマを含んでいたらワヤになりますが。)

> (プログラミングおよび画像処理のカテゴリにも、同じ質問を投稿しました。)

回答がつく前に消せっ!迷惑な!
    • good
    • 1
この回答へのお礼

まず、ご回答をどうもありがとうございます。お礼申し上げます。

ウィーナーフィルタで検索しましたが、どう使うのか、特定の周波数成分だけ検出して除去できるのか、よくわかりません。
https://docs.scipy.org/doc/scipy/reference/gener …
補足で画像をアップしようとしたのですが、補足そのものが表示されません。
お手上げ感があります。

2次元高速フーリエ変換で、その成分が見えるかどうかをもう一度チェックしてみて、もしダメならもう少し原始的な方法(画像回転->メディアンフィルタ->画像回転戻し)でやってみます。

お礼日時:2023/08/01 08:35

>添付の画像データ


見当たりませんが

>やり方をご存じの方がいらっしゃいましたら、ぜひとも教えていただければ
原画像がノイズで隠れて崩れちゃったものはどうやっても元には戻せません。
ノイズで正画像の情報がなくなってるからです。

周囲の画像から「ここは多分こんな画像だったんだろう」な予測して
補正する技術はあるみたいですけどね

プログラミング言語の話じゃありません

>(プログラミングおよび画像処理のカテゴリにも、同じ質問を投稿しました。)
何のカミングアウトです?マルチ投稿してると公言するって一体どういう気です?
理解できません

いろいろ問題アリですよ質問者さん
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!