StretchBltでの画像処理方法 – プログラミング – Home

StretchBltでの画像処理方法
 
通知
すべてクリア

[解決済] StretchBltでの画像処理方法


たけ
 たけ
(@たけ)
ゲスト
結合: 25年前
投稿: 116
Topic starter  

たけ@初心者です。
Bitmap画像の拡大・縮小処理を行なう際にCDC::StretchBltを使おうと思っている
のですが、その処理方法って、例えば縮小の場合、単純な間引き処理とかやってるん
ですか?単純間引き以外の方法は可能なのですか?
また、CDC::SetStretchBltMode(HALFTONE)を設定した時には、「対象となるピクセル
のブロックの平均的な色は、元のピクセルに近いものになります」という説明があります
けど、これってPhotoshopとかでいう「ニアレストネイバー法」にあたるような処理なの
でしょうか?

どなたかご存知の方、ご教授願います。


引用未解決
トピックタグ
NEO
 NEO
(@NEO)
ゲスト
結合: 22年前
投稿: 18
 

色々と想像できているようなので、
まずはやってみることをお勧めします。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>どなたかご存知の方、ご教授願います。

ご存知の方ではないのですが、勝手に答えます
BitBlt() も StretchBlt() もどちらも装置(デバイス)が絡むので、結局はデバイスドライ
バーが
処理を引き受けます。
装置がプリンターの場合、イメージプロセッサー(実装がハードでもソフトでも)か
デバイスドライバーかで相当する処理を引き受けるでしょう
装置がグラフィック(ビデオ)カードの場合、チップに機能があればそれを使うかもしれない
し、
デバイスドライバーがソフトで処理するかもしれません
つまり、デバイスドライバーの実装に依存するので、一般的にどうかという事は判らないでしょ

ただ、ブロックの平均的な色は元のピクセルに近いものになるという表現だとニアレストネイバ
ー法
だとは私なら受取りません(間違ってたら御免なさい)


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

>例えば縮小の場合、単純な間引き処理とかやってるんですか?
既定ではそうです。ニアレストネイバー法(=ポイントフィルタ=最近傍画素法)です。

>単純間引き以外の方法は可能なのですか?
可能です。HALFTONEがそれです。

>これってPhotoshopとかでいう「ニアレストネイバー法」にあたるような処理?
違います。バイリニアフィルタである確率が高いです。
処理後の画像を観察した結果と、高速性要求がある為です。
ニアレストネイバーは上記の通りです。

ジャギー除去フィルタの中ではバイリニアサンプリングが単純、高速です。
StretchBlt(CDC::StretchBlt)は、拡大縮小を伴ったりフィルタを施す時
ソフトウェア処理します(Microsoftの公式ドキュメントより)。

上記から、遅いソフトウェア処理で 高速化を最重視し、そこそこ質を高めるには
バイリニアに絞られます。その為バイリニアを採用したと思います。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 25年前
投稿: 116
Topic starter  

NEOさん、島さん、くたくたさん、ありがとうございました。
実際に自分でやってみました。そして、くたくたさんご指摘のような
内容であることが理解できました。

再度お礼申し上げます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました