破損したJPEG画像を修復するためのツールってないんですかね? 8×8だか16×16だかのチャンクごとに、YUV, RGBの各プレーンごとに取り出せる感じで

JPEG Analyerというツールを見つけたが、基本的にこれはイメージデータの修復を考慮してなく、ヘッダ系データの再挿入やデータ構造の異常検知がメインっぽい

フォロー

自分でプログラムを書くか~になって、WikipediaでJPEGの項目を見ていたら、IJGのlibjpegを活用した、サンプルコード的な無劣化編集ツールのjpegtran (当然編集できる内容は限られる) を見つけた。これを使って問題の写真をグレースケール化したはいいんだけど、FirefoxとWindowsのフォトとでデコード結果が異なっていて首をかしげている。元が-90度回転したイメージなので左側が切れているのは理解できるが、libjpegは248バイトの余計なデータがEOIの前にあると言いつつデコードしてくれるこれは何

"JFIFの場合は" YCbCrに変換して色差信号をサブサンプリング、DCTにかけて量子化行列でガッツリ高周波成分を捨てて、直流は頭からの差分をハフマン符号化、交流成分は普通にハフマン符号化するという話である

jpegtranでぶっ壊れた場所以降を弄ろうとすると、DCT係数がレンジ外とエラーを吐くので、直流成分でも殺されたんかな???と思ってきた (libjpegじゃMCUが壊れたデータを扱えなさそうである)

mstdn.nere9.help/@hadsn/103111

結局のところ、自分でプログラムを組む必要があるっぽいし、SOSごと、MCUごとに切り出すプログラムが必要っぽい

ハフマン復号したり、直流成分のデルタを自分で計算しなければならないとか、クッソ面倒じゃない??? くっつけた時はリセットしまくりじゃダメ???

リセットしまくりなのはお行儀が悪いので、適当なツールでリセットなしJPEGに書き換えられないと論外だよなあ....

何が死んでいるのか調べやすくするため、不健全部分だけ切り出す試みが成功して嬉しくなっている (Windowsのフォトだと、グレースケールだとそれなりにデコードできている)

libjpegだと反転現象が起きている一方、Windowsのフォトだとシアンまみれになった後にグレースケール部分がちゃんとデコードされ、Firefoxだとシアンまみれのままなのが謎

ちなみにMicrosoft EdgeやIEもシアンまみれのまま

は? お前ハフマン符号じゃなくて算術符号を使っとるんか??? < Galaxy Note8

何も考えずに全域をjpegtranでクロップしても、破損部分以降のデータが書き換わる謎に遭遇している

libjpeg付属のdjpegだとこのように白黒反転した状態 (シアンまみれではあるが) になってウーンという感じ

今更気付いたけど、Windowsのフォトアプリでなぜか (比較的まともに) 再生できている破損部分、微妙にY成分の濃度が違うっぽい

とりまヘッダを解釈して、含まれるMCUの数を算出する感じでいいですかね

どのようなデータ型にするか困っております

一時ファイルはjsonでいいや、になった (何倍まで膨れるんだ) んですが、本当にケツから舐められるのか不安になっている

JPEG File を Decodeする - Qiita qiita.com/tobira-code/items/63

BitMiracle.LibJpeg, 完全に理解した

How to get DCT-coefficients from Jpeg using Visual C# and LibJpeg.Net - Stack Overflow stackoverflow.com/questions/28

新しいものを表示
ログインして会話に参加
:realtek:

思考の /dev/null