• ベストアンサー

平滑化フィルタのエッジ処理

平滑化フィルタのエッジの計算方法について教えてください。 たとえば3×3の以下のような平滑化フィルタを使ったとします。 1/9|1/9|1/9 1/9|1/9|1/9 1/9|1/9|1/9 このフィルタをN×Mの大きさのimageの全画素に処理をしたとすると、 エッジでない画素は、処理をしたい画素を含む周りの9個の画素それぞれに1/9をかけて、その和をとればいいと思うのですが、エッジの画素は、周りには画素が3個とか5個とかしかなく、上で定義したフィルタを適用できません。 エッジの画素にはどのような処理をすればいいのでしょうか? 御存じの方がいらしたら、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8508/19344)
回答No.1

色々ある。 ・ハミ出した部分を「白」として処理する。 ・ハミ出した部分を「黒」として処理する。 ・ハミ出した部分を「3×3の中央の画素と同じ色」として処理する。 ・上にハミ出した画素はその画素の1つ下、下にハミ出した画素はその画素の1つ上、右にハミ出した画素はその画素の1つ左、左にハミ出した画素はその画素の1つ右、コーナーの斜め外にハミ出した画素はコーナーの画素を使う。 ・画像の上下、左右をループさせる。右にハミ出したら画像の反対側の左端の画素を使うなど。 ・エッジ部分の画素はフィルターを適用しない。 どれを使うかは「状況」によるので、これが最適、これが普通、と言う物は存在しません。 良くやるのが「必要なサイズよりも少し大きめに画像をサンプリングしておき、フィルターをかけたら、必要な部分だけを切り抜いて、エッジに近くてちゃんとフィルターが作用してない可能性がある部分は捨てちゃう」って方法。この方法なら「フィルターを適用する事によって、画像外から侵食してきた変なデータ」を排除出来ます。

関連するQ&A

  • 平滑化フィルタなどフィルタリングをするにあたって

    3*3近傍のフィルタを掛けるとき、 注目画素を、(1,1)などからはじめめれば、上下左右に3*3近傍があるので、フィルタを普通に掛ければいいと思うのですが、 注目画素を(0,0)(一番左上)にしたときは、注目画素の左近傍や 上近傍が無いですよね。そういうところはどうやってフィルタかければいいのでしょうか? 値の無い場所は無視して、ある場所だけ掛けて計算すればいいのでしょうか?(例えば上の例だったら、右、斜め右下、下、注目画素の4点だけフィルタ掛けて計算すればいいのでしょうか?)

  • 画像処理のラプラシアンフィルタについて

    ラプラシアンフィルタを利用したエッジ抽出を現在行っているのですが (i,j)*4-(i,j-1)-(-i,j)-(i+1,j)-(i,j+1) このように計算した値を-の場合は0にして,255を超える場合は255にするという処理を行い それ以外は計算して出た値を使うので間違いはないでしょうか? エッジ抽出というと二値で出力されそうなイメージがあるのですが…

  • 画像のエッジ抽出について

    画像のエッジ抽出について 画像処理を学び始めたばかりのものです。 細菌や細胞などのエッジを、 C言語を使って抽出しようと思っているのですが ・Sobelフィルタ ・FFTによる低周波カット ・ラプラシアンフィルタなど の代表的なフィルターを組み合わせて使っても、綺麗にエッジが出ません。 二値化してエッジになるのには遠い状態です。 自分の撮った画像が悪かったのか・・と思いましたが、 フリーソフトのimageJで、エッジ抽出という処理をすると 綺麗に最近の形状が出ます。 これはどのようなアルゴリズムを使っているのでしょうか・・・ 教科書やネットを調べていても、上の3つ以外にフィルタがなさそうなので 途方に暮れています。。 お恥ずかしいですが、よろしくお願いいたします。。

  • デジタルフィルタの計算式について

    すいませんがIIRのデジタルフィルタの計算式についてわかる人がいましたら教えてください。スポーツ関係をしていて、データ処理をエクセルで計算式を今作っているのですがどうもわかりません。  2次のバターワースフィルタの計算式Y(n)=AX(n)+AX(n-1)+AX(n-2)+BY(n-1)+BY(n-2)と専門書に書かれていますがこの式でデータの反対からもフィルタを掛けていることになるのでしょうか?時間的なずれはなくなることですよね  それと実際計算をするときには、初めのY(n-1)、Y(n-2)は、どのような値を入れたらいいのですか?  よろしくお願いします

  • 繰り返し処理の使い方

    繰り返し処理の使い方について質問です。以下の.plファイルを作成しました。 for($line =0;$_ =<stdin>;$line++){ if($line < 400){ @line = split/,/,; $data1 +=$line[1]; } } for($line =0;$_ =<stdin>;$line++){ if($line < 800){ @line = split/,/,; $data2 +=$line[1]; } } $data_1 = $data1; $data_2= $data2; print"$data_1 \n"; print"$data_2 \n"; この.plファイルで合計計算の実行を試みたのですが、data_2の値が0でした。(data_1は合計計算が出来ています。) 繰り返し処理の2つ目はなぜ0なのでしょうか、またdata_2の合計計算を実行するにはどうすれば良いのでしょうか。 お願いします。

    • ベストアンサー
    • Perl
  • エクセルのオートフィルタ機能がおかしいのです。

    XP、OFFICE2007のユーザです。最近、エクセルの調子がおかしいのです。以前はそういうことはなかったと思うのですが、オートフィルタをかけた後のデータの処理ができません。その症状は次のとおりです。 症状1)オートフィルタして抽出されたセルのうち、連続して抽出されたセルと、その次に抽出されたセルの間に波線が入ります。(たとえばa1:a3とa10:a11の間です。) 症状2)このまま、N×Mセルの長方形に範囲指定してコピー&ペーストなどの基本的操作を行うと、「この操作は複数の範囲には適用できません。」と表示されます。 症状3)強行すると、抽出されたセルのうち、連続セルだけ(上の例でいえば、a1:a3だけです。)がコピーされます。 そこでお訊ねします。 q1 そもそも、エクセルでは抽出データにはコピーなどの操作はできないのでしょうか。 q2 できるとすれば、どのように修復したら良いのでしょうか。 よろしくお願いします。

  • 関数の極限の問題を教えてください。

    問題 次の無限級数の収束,発散を調べよ。また,収束するものについては和を求めよ。 (1) 2 -3/2+3/2-4/3+4/3・・・・・・・・・・   答え 発散する (2) 1/2-1/3+1/3-1/4+1/4・・・・・・・・   答え 収束し、その和は1/2 この問題の解答の途中計算でn=2m,n=2m-1 Sn=S2m= 2 -3/2+3/2-4/3+4/3・・・・・・・・・・ Sn=S2m-1=2 という計算があるのですが、どういうことをしてるのかぜんぜんわからないです。 計算の解説やどういう操作をしているか教えてください。お願いします。

  • 整数の問題について

    中学2年のものです。 数学について質問します。整数の問題の説明についてですが、 二つの奇数の和は偶数になることの説明で、その和は、(2m-1)+(2n-1)=2m+2n-2=2(m+n-1)となります。 2m+2n-2から2(m+n-1)にできることについての理解が怪しいので、なぜ2m+2n-2から2(m+n-1)にまとめることができるのか教えてください。また、ほかにもこのような問題が出たときにどのようにしたら上記の計算のようにまとめることができるのかということの説明もいただけたら幸いです。

  • Gmailのフィルタで宛先を複数指定

    Gmailを使用しています。 現在フィルタを活用し、特定のタイトルを含むメールをすべて特定のアドレス(携帯、以下Aとします)。 この他にB(携帯)にも転送しようと思い、フィルタを作成したのですが、転送されませんでした。 調べたところ、Gmailのフィルタは上から順に実行され、一度実行されるとそれより下のフィルタには適用されないとのことでした。 なのでAのフィルタの設定にBのアドレスを追加したいのですが、どうすればいいですか?またこれ以外にやり方などありましたら教えて下さい。 よろしくお願いします。

  • コンピューターのデータ処理について

    ※すみません、以下PC初心者で小学生並の質問になります。用語ももしかしたら誤用しているかもですが、何となくこのイメージであっているかという質問です。ご容赦ください。 パソコンで処理を行っている中ではあらゆるデータ・情報が0と1で表されたもので処理していて、 例えば「あ」という文字は8bitでは「10011110」(適当です)といった感じになるかと思うのですが、 これは「あ」という文字を画面上に写すために どこの画素?ライト?を光らせるか(0と1が電気のON/OFF)という情報を表しているというイメージは合ってますでしょうか。 加えて、 1文字でも ・文字の大きさ ・色 ・画面上のどこにある文字か など色々と情報があるかと思うのですが、 これらの情報も(8bitの)数字列に含まれているのでしょうか?