2

私は現在、PNG フィルターの独自の実装に取り​​組んでいます。ニューラル ネットワークを使用して、現在の既存の PNG フィルターよりも優れた予測を作成しようとしています。

  • 0 - なし
  • 1 - サブ
  • 2 - 上
  • 3 - 平均
  • 4 - パエス
  • 5 -私の実装 (ニューラル ネットワーク予測を使用)

詳細情報: http://www.w3.org/TR/PNG/#9Filters

私はすでにいくつかのライブラリを見ました:

  • pngcrush (c.. で実装されています)
  • Keypoint - PngEncoder (現在のお気に入りです)
  • ObjectPlanet - PngEncoder (ソースに 1000 ドルを支払わなければなりません.. :P)

他にもいくつかあります。しかし、私の質問は、フィルターの独自の実装を簡単に追加できる他の PNG エンコーダー(Java で記述)を知っていますか、または独自のフィルターを使用する他の可能性はありますか?

ご回答ありがとうございます。

4

2 に答える 2

8

少し前に、私は小さな純粋な Java PNG ライブラリ (encoder-decoder)
http://code.google.com/p/pngj/を作成しました。

それは小さく、非常に完全で (完全ではありません)、サードパーティのライブラリに依存せず、コードが利用可能です (そして、理解しやすいことを願っています)。カスタムフィルターを実装したい場合は、そこを掘り下げることができます。助けが必要な場合は、私に尋ねることができます。

ただし、(他の回答で指摘されているように)PNG標準はカスタムフィルターをサポートしていないことに注意してください。エンコードされた画像を読み取ることができるのはあなただけです。

于 2011-04-15T15:52:07.590 に答える
2

これは質問に対する答えではありませんが、「このようには機能しません」という意味です。

リンクしたPNG 仕様セクションでは、Filter メソッド 0と、このメソッドのフィルター タイプ (関数) のリストを定義しています。このリストは固定されています:

フィルタ メソッド 0 は、この 5 つのフィルタ タイプのセットを正確に指定します。これは拡張されません。これにより、サポートされていないフィルター タイプが含まれているかどうかを判断するために、デコーダーがデータを解凍する必要がなくなります。IHDR でフィルター メソッドを確認するだけで十分です。

したがって、ここでニューラル ネットワークの予測を単純に追加することはできません。

できることは、ニューラル ネットワーク フィルター タイプを含めることができる新しい Filter メソッド (メソッド 1 など - ただし、セクション 4.9を参照) を作成することです。

しかし問題は、あなたのソフトウェアが作成した PNG を読みたいと思うすべてのソフトウェアが、この新しいフィルター方法をサポートする必要があるということです。そのため、内部の画像ストレージのためだけにこれを行いたくない場合、これは有用なことではありません。


ニューラル ネットワークを実際に使用できるのは、スキャンラインごとに適切なフィルター タイプ (与えられた 5 つのフィルター タイプ) を選択するためです。これにより、結果の gzip 圧縮されたデータ ストリームが可能な限り小さく (または効率的または ...) なります。

于 2011-04-14T00:05:34.887 に答える