ImageDataクラスでは、C#のインデクサという機能を使って、new したImageDataクラスをオブジェクトをあたかも配列かのように扱うことができます。
インデクサの例
var img = new ImagingSolution.Imaging.ImageData("image.bmp");
var bright = img[2, 5];
のようにするだけで画像の輝度値を取得することができます。
インデクサを用いると、配列ではできない
var bright = img[-1, -1];
のように配列の添え字に相当する部分にマイナスの値を指定することもできます。
このインデクサの機能を使って、画像のフィルタ処理で、画像の外周部分において、画像の外側の輝度値を参照する方法をBorderTypeプロパティにより設定を行います。
3×3フィルタにおいて、画像の外側を参照してしまう例
設定はBorderTypeEnum列挙型を指定します。
BordeTypeEnum.Mirrorの場合(初期値)
画像の輪郭部分を基準に折り返すように輝度値を参照します。
img[-1, -1]の値は130となります。
BordeTypeEnum.Clampの場合
画像の輪郭部分の輝度値に固定し参照します。
img[-1, -1]の値は71となります。
BordeTypeEnum.ToZeroの場合
画像の外側の輝度値を0にします。
img[-1, -1]の値は0となります。
コメント
[…] 3/19 【ImageDataクラス】BorderTypeプロパティ […]
[…] 3/19 【ImageDataクラス】BorderTypeプロパティ […]
[…] 3/19 【ImageDataクラス】BorderTypeプロパティ […]
[…] 3/19 【ImageDataクラス】BorderTypeプロパティ […]