A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは.
>文字と画像の境界が曖昧になってしまわないでしょうか?
これはいかなる画像拡大法を用いてもそうなることであり,そして仕方の無いことです.
詳細は省略しますが,拡大を行ったところでエッジ近傍の鋭さを表す,
「画像の高周波成分」が復活するわけではないからです.
この意味では高周波成分を強調するバイキュービックは良い選択です.
この方法が拡大と同時に「エッジ強調処理」をかけるようなものだからです.
周波数云々のことが分からない場合はフーリエ変換などの文献や書籍を当たってください.
なお,高周波成分の復活(強調ではありません)は,
いわゆる「信号処理学」の分野になってしまいますので,
この場所で簡単に説明することができるような内容ではありません.
とりあえず,拡大アルゴリズムが指定できる画像処理ソフト(gimpなど)
で拡大を行ってみて視覚的に判断してはどうでしょうか.
私の回答はかなり「理論寄り」の回答であり,「やってみた方が分かりやすい」こともありますので.
No.3
- 回答日時:
こんにちは.
画像拡大で必要なのは要するに「間の画素値を作る」ことです.
これは「拡大後の画素値が何処から来たか」を計算することによります.
例えば,100*100の画像を3/2倍に拡大すると150*150になるのはわかると思います.
ここで,拡大後の画像の(100,100)の画素は,元の画像の(100*2/3,100*2/3)=(66.66,66.66)に対応します.
ところが,元の画像の画素値は整数座標でしか分からないわけですから,
「間の画素値を作る」必要が生じます.
通常は,(66.66,66.66)近傍の画素値を寄せ集めて「間の画素値を作る」ことになります.
最も単純なのは「最も近くの画素値を平均すること」です(バイリニア法と言います).
さらに「もう一回り外側の画素値も重みをつけて使うこと」が考えられます.
ここで最も良く使われるのが「バイキュービック法」です.
数学的には「間の値を作ること」を「内挿」と言います.
理論的に最も完全な内挿方法はフーリエ変換から導かれる,
「Sinc関数による重み付け」です.
なのですが,この関数は一画素を作るのに全ての画素値を使わねばなりません.
これでは計算量の面で現実的ではないので,有限の近傍で計算を打ち切ります.
一次近傍→バイリニア法
二次近傍→バイキュービック法等
三次近傍→Lanczos3等
です.下の二つはいずれもSinc関数を近似する目的で構成されています.
バイキュービック法が縮小に向かないのは,
これが「高周波成分を強調するため」です.
縮小時に高周波成分を強調すると逆にギザギザ感が増すことになります.
この回答へのお礼
お礼日時:2008/12/04 17:23
回答ありがとうございます。
お返事遅れて申し訳ありません。
回答を受けてバイキュービック法を少し調べたのですが、例えば濃淡画像に2値の文字が混ざった画像を拡大した時、文字と画像の境界が曖昧になってしまわないでしょうか?
そこをクッキリさせるにはどうしたらいいでしょう?
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF 画像調整してスクショし保存した画像をPC画面と同画質で印刷する方法 1 2022/03/31 19:09
- その他(IT・Webサービス) 画像調整してスクショし保存した画像をPC画面と同画質で印刷する方法 3 2022/03/31 19:11
- PDF 画像調整してスクショし保存した画像を印刷する方法 1 2022/03/31 18:42
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- X(旧Twitter) ツィッターの画像表示について 1 2023/08/17 09:28
- その他(ソフトウェア) IrfanView で画像のスクロール?できますか 1 2022/08/31 13:57
- その他(ソフトウェア) 画像の拡大率を固定したまま次の画像を表示出来るビューアを探しています 2 2022/05/13 17:19
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- その他(ソフトウェア) コマンドプロンプトについて教えてください。 状況: 画像編集ソフト上でネットから保存した画像を使うの 3 2022/05/26 11:14
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
魚眼画像について
-
行列の積の処理を高速化したい
-
画像をFFTした際のスペクトル分...
-
姿勢センサでプロジェクタの台...
-
量子コンピュータで四則演算
-
生年月日(yyyy/MM/dd) → 年齢...
-
Google ColaboでGUI作成
-
String^の^自体が何を意味して...
-
静的ライブラリから静的ライブ...
-
本格的なGUIを作るのにおすすめ...
-
VB.NET とドットNET(.NET...
-
Windows Media Playerを開くと...
-
unix-c と linux-c の違いは?
-
iCloudフォトライブラリ内の画...
-
scipy っていうのをいれようと...
-
outp関数について
-
32768以上の乱数を作りたいので...
-
Access2000のVBAでSHA-256ハッ...
-
IPアドレス、サブネットマスク...
-
【VC++】MFC、C++/CLI(CLR)、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
生年月日(yyyy/MM/dd) → 年齢...
-
OpenCVで寸法測定
-
色混ぜのアルゴリズム
-
直線と線分の交差判定について...
-
行列の積の処理を高速化したい
-
解像度と誤差について
-
魚眼画像について
-
姿勢センサでプロジェクタの台...
-
HBITMAPを初期化するとは?
-
VB BitmapをExcelに貼り付け 大...
-
Canny法に用いる閾値の決定法に...
-
C言語での簡単な画像処理みた...
-
VBを使った自作の逆FFT
-
リアルタイムで多数の3角形ポリ...
-
点字認識システムを作成したい...
-
画像をFFTした際のスペクトル分...
-
Ps+のフリープレイでDestiny2の...
-
Windows Media Playerを開くと...
-
本格的なGUIを作るのにおすすめ...
-
python urlopen error について...
おすすめ情報