問題タブ [pbmplus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1576 参照

image-processing - JPEG を非ディザ ビットマップに変換するときにしきい値を設定するにはどうすればよいですか?

私はデジタル カメラを手早く汚れたスキャナーとして使用しています。解像度は実際には約 300dpi で、かなり妥当です。しかし、私のカメラはカラー画像を生成し、それをビットマップに縮小したいと考えています。画像をディザリングしたくありません。ドキュメントを白黒スキャナーに通した場合に得られるものを探しています。JPEG をグレースケール イメージに変換するのは簡単で、djpeg -grayscale. 難しい部分は、どの灰色のピクセルを白にすべきか、どの灰色のピクセルを黒にすべきかを決定することです。

pbmplus ツールが提供するもの

しかし、キラーはその値$vです。適切な値は 0.3 から 0.6 の範囲のようで、手作業で試行錯誤を繰り返すのは私を苦しめています。(ImageMagick に詳しい人にとっては$v、手元にあるのは-black-thresholdパラメーターの値です。)

手でしきい値をより速く見つけるのに役立つGUIを構築できると思いますが、私が本当に探しているのは、しきい値を設定してグレースケール画像をきれいなビットマップに変換するアルゴリズムです。理想的には、これはグレースケール画像の構造を調べるだけで機能します!

0 投票する
1 に答える
3680 参照

image-processing - 画像内のピクセルをスケーリングして明るさを調整する方法は?

写真のグレースケール画像があります。イメージの特定の部分が照明不足であり、輝度 Y = 0.8 のピクセルは実際には 90% グレーに調整する必要がある、つまり、そのピクセルには輝度 0.9 を指定する必要があると判断しました。私の質問は、近くの他のピクセルをどのようにスケーリングするのですか? すべての輝度に 9/8 を掛けるのは間違いだと確信しています。なぜなら、均一に見えるためにはスケーリングを非線形にする必要があると 聞いたことを漠然と覚えているからです。しかし、進歩を可能にする方程式を見つけるのに苦労しています。(もちろん、私は実際に、非常に多くの写真に対してこの調整を行うプログラムを作成しています。)

私のピクセルのソースは pbmplus PGM 形式で、man ページには次のように書かれています。

各グレー値は、ピクセルの強度に比例する数値であり、CIE Rec によって調整されます。709 ガンマ伝達関数。(その伝達関数は 2.2 のガンマ数を指定し、小さい強度の線形セクションを持ちます)。したがって、ゼロの値は黒です。Maxval の値は、CIE D65 の白と、画像内の最も強い値、および画像が比較される他の画像を表します。

これをもっとよく理解していれば、どうすればよいか、もっとよくわかるはずです。

均一な明るさの画像の作成に関する関連する質問を見つけました。


私を軌道に乗せてくれたShmooptyに感謝します。私はあなたの答えを受け入れ、それにいくつかの情報を追加しました。

0 投票する
1 に答える
5164 参照

python - バイナリ PBM/PGM/PPM の作成

バイナリ PBM/PGM/PPM ファイルを作成する方法を理解しようとしています。私が知っているように、各形式にはプレーンと生の 2 つのタイプがあります。たとえば、黒の PBM 5x5 の構造は次のようになります。

ご覧のとおり、単純です: 白は 0、黒は 1 です。ただし、PBM には生のバージョンがあり、次のようになります。

どうすればいいですか?PBM形式の説明は次のとおりです。

A raster of Height rows, in order from top to bottom. Each row is Width bits, packed 8 to a byte, with don't care bits to fill out the last byte in the row. Each bit represents a pixel: 1 is black, 0 is white. The order of the pixels is left to right. The order of their storage within each file byte is most significant bit to least significant bit. The order of the file bytes is from the beginning of the file toward the end of the file. A row of an image is horizontal. A column is vertical. The pixels in the image are square and contiguous.

何をする必要があるのか​​ わかりません。structまたはを使用する必要があるのではないかと思いますarray.arrayが、よくわかりません。あなたの助けが必要です; そのようなファイルを作成する方法をPythonで例を挙げていただけますか?

より大きな画像 (2000x5000 など) を処理する必要があるため、適切な速度が必要です。ctypesしかし、問題は、ライブラリなしで純粋な Python を使用する必要があることです。バイナリ PBM ファイルを作成する方法の簡単な例を教えてください。

バイナリの PGM と PPM の処理について教えていただけると、さらにすばらしいです。

ありがとう!

0 投票する
1 に答える
211 参照

ghostscript - .pbm ファイル イメージ レンダリング - [vhold] スキャンライン ウィグル?

imagepbm、pgm、または ppm ファイルを読み取り、オペレーターを使用して画像をポストスクリプト出力デバイスにレンダリングするプログラムをハックアップしようとしています。P4入力(バイナリポータブル(1ビット)ビットマップ)パスをテストするだけですが、私の出力はすべて厄介です。

問題は、行のバイト幅と予想されるパディングの計算であると確信しています:

しかし、私がそれを通り抜けるとき、それは正しいようです。この 215 ビット幅のビットマップでは、1 行あたり 27 バイトになります。

編集:「パッド」チョップを削除すると役立ちます。おそらく、余分なパディングを追加する必要がありますか?

この問題は出力に示されています。

改善されたがまだ悪い

この回答の最後にある同様の、しかしより単純なプログラムは問題ありません。

わかりました画像