Archive
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
しばらく放置してしまいました。新年一つ目の内容は画像の拡大・縮小にしました。



画像を拡大・縮小させる場合は、回転させる場合と同様に考えます。
つまり、outputの画像の座標から必要なinputの画像の座標を求めて画素値を取得します。

コードは以下のように考えました。
Scaleが取得した拡大率になります。
for (int i = 0; i < bitmap.Width; i++)
{
    for (int j = 0; j < bitmap.Height; j++)
    {
        double x = i / Scale;
        double y = j / Scale;

        if (chk[flag](x, y, bmp))
        {
            Color bmpCol = func[flag](x, y, bmp);
            bitmap.SetPixel(i, j, bmpCol);
        }
    }
}


前回同様処理の肝の部分だけ書きました。
delegateを用いてfunc内で使用する補間用のメソッドを切り替えています。 詳細なコードは、
画像を回転させる際の画素を補間するコード
で記載した補間方法を使用しています。

拡大(1.3倍)

【ニアレストネイバー】
Near13.png


【バイリニア】
bilinear13.png


【バイキュービック】
bicubic13.png


【Lanczos2】
Lan2_13.png


バイリニアは若干ぼやけているように見えます。
下二つの違いがあるのですかねぇ・・・

縮小(0.75倍)

【ニアレストネイバー】
Near075.png


【バイリニア】
bilinear075.png


【バイキュービック】
bicubic075.png


【Lanczos2】
Lan2_075.png


ギザギザが目立つようです・・・
縮小の場合は低域通過フィルターで高域をカットしないとダメなようです。

スポンサーサイト
FC2カウンター
プロフィール

詠み人知らず

Author:詠み人知らず
プログラム好きな名もなき凡人がお送りしています。(得意とは言っていない
最近の興味はPython、C#、Matlab(Octave)、画像処理、AR(拡張現実)、統計などなど・・・

気分で思いついたことを書くため話題に一貫性がないかもしれません。

カレンダー
12 | 2013/01 | 02
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
タグクラウドとサーチ

カテゴリ
最新コメント
最新トラックバック
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。