imfilter
の境界パディング オプション
イメージの境界の出力ピクセルを計算した場合、畳み込みまたは相関カーネルの一部が、次の図に示すようにイメージからはみ出てしまうのが普通です。
カーネルの値がイメージの外にはみ出る場合
関数 imfilter
は通常、0
と想定してはみ出たイメージ ピクセルを埋めます。これは通常、ゼロ パディングと呼ばれ、次の図のようになります。
外側ピクセルのゼロ パディング
イメージをフィルターすると、ゼロ パディングを行った結果、イメージのエッジ周辺が、この例に示すように濃い帯で覆われることがあります。
I = imread("eight.tif"); h = ones(5,5) / 25; I2 = imfilter(I,h); imshow(I) title("Original Image"); figure imshow(I2) title("Filtered Image with Black Border")
イメージのエッジ周辺からゼロ パディングのアーティファクトを取り除くため、imfilter
には "境界重複" という別の境界パディング方法があります。境界重複では、イメージの外側にあるすべてのピクセルの値が、最寄りの境界ピクセルの値を重複することによって決定されます。これを次の図に示します。
重複された境界ピクセル
境界重複を使用してフィルター処理を行うには、追加のオプション引数 "replicate"
を imfilter
に渡します。
I3 = imfilter(I,h,"replicate"); figure imshow(I3); title("Filtered Image with Border Replication")
関数 imfilter
は、"circular"
や "symmetric"
のような他の境界パディング オプションもサポートしています。