私は、特異値分解を使用して特定のイメージを圧縮しようとしています。私は、私はそれがプロセス全体に見えるゴミ色のピクセルを取得し続けていることに気づくまで私はそれを持っていると思った。イメージを圧縮しようとするとカラーピクセルが表示される(写真が含まれます)
右上に示される番号は0がオリジナル画像である反復の数を示します。
これはよくあるエラーですか?私は行方不明のものがありますか?
私はそれが私の数学、それ自体と関係しているかもしれないと考えます。私はJAMAを使用しています。JAMAは、これを処理するJavaの行列パッケージです。以下は各反復のための私の実装です:
for (int i = 0; i < k; i++) {
Matrix step = (uColumns[i].times(sValues[i])).times(vColumns[i].transpose());
encoded = encoded.plus(step);
}
基本的に私がやって(または実行しようとしている)だものです:
M = M + (s1*u1*v1^t)
は私の実装と明らかに何か問題があるのか、おそらく誤りでありますJAMAがSVDを実行する方法のために?私がテストしたところから、行列UとVの値の符号は、WolframalphaまたはMatlabによって生成された値と行によって異なります。
何か助けていただければ幸いです。
おかげで、
Justian
私はこのライブラリをSVDのために知りません。私はC#でこのライブラリを使用していましたが、この種のプログラムをJavaで使ったことはありませんでしたが、類似の圧縮方法を使用する他のユーザーとあなたの結果を比較しましたか? – HericDenis
オーバーフローまたはアンダーフローによって白いピクセルが発生する可能性がありますか?たとえば、最初は黒(0)だったピクセルは、非可逆圧縮のために-0.01になり、-1に丸められ、画面上では255になります... –