0

私の目標は、Windows Mobileデバイスのカメラを使用して写真を撮り、その画像をモノクロのビットマップに変換して、.NETCompactFrameworkを使用してBluetoothプリンターで印刷できるようにすることです。私はここで探していた答えを見つけました:

.netCompactFrameworkで画像を1bppビットマップに変換します

このコードを追加し、カメラで撮影した画像(.jpgファイルのサイズは約300K)でテストしたところ、上記のスタックオーバーフローソリューションのコードからその画像をコードに渡したところ、エラーなしで完了しました。ビットマップを表示すると、黒一色の画像になります。

コードに渡される元のビットマップは特定の解像度である必要がありますか、それとも他の制限がありますか?カメラで撮った元の画像は、そもそも白黒でした。

4

1 に答える 1

0

これは難しい問題です。妥当な結果を得るために本当に必要なことは、元のピクセルの「黒」に応じて、プリンターが白と黒のドットを比例して配置できるようにするディザリング アルゴリズムを実装することです。アルゴリズムを各ピクセルを白または黒のみに変換するように制限すると、出力は撮影した元の写真をうまく表現できなくなります。ディザリングでは、入力の各ピクセルを分析し、入力ピクセルの暗さに基づいて出力の周囲のピクセルを調整します。

一般的なディザリングの実装は、Floyd-Steinberg アルゴリズムです。ここでは、その基本的な形式について説明します。

Floyd-Steinberg ディザリング

ググればもっとたくさんの情報が出てきます。

実装するのは簡単なアルゴリズムではないため、適切に実装するには午後よりも多くを費やす準備をしてください.

于 2012-07-13T14:07:32.607 に答える