Действительно ли кодеки libjpeg и .Net jpeg существенно различаются в отношении монохромных данных?

Я работаю с большим количеством данных монохромных изображений, и сегодня утром я заметил, что существует значительная разница между способами libjpeg и. Кодек Net jpeg обрабатывает монохромные данные. Похоже, что монохромное изображение, сохраненное с ЛЮБОЙ настройкой качества с использованием libjpeg и открытое с использованием стандартного кодека .Net jpeg, на самом деле загружается только с 16 различными оттенками серого, а все промежуточные оттенки отображаются как пунктирные.

Вот гистограмма плавного градиента, сохраненная libjpeg и загруженная .net

Histogram of codec conflict affected gradient

Гистограмма должна быть идеально ровной.

А вот (увеличенный) образец того, как выглядит этот градиент (он должен быть идеально плавный переход) enter image description here

Это должен быть плавный переход от серого 85 слева к серому 136 справа, но на самом деле визуализируются только 4 оттенка серого, чтобы сделать этот переход.

Мой вопрос: сумасшедший ли я, и если не только насколько далеко идет ли это несоответствие кодеков? Есть ли хороший обходной путь, если вы используете обе библиотеки в разных программах?

Я не виню ни один из кодеков, а просто указываю на то, что кажется несоответствием. Я заметил это с изображениями, которые, как я знал, были созданы с использованием libjpeg, предположил, что это проблема с настройкой качества, попытался использовать средство изменения размера изображений faststone для создания тестовых изображений и получил тот же результат, попытался использовать irfanview и снова получил тот же результат. Поскольку обе эти программы должны использовать некоторую библиотеку jpeg, я склонен предполагать, что они также используют libjpeg и существует реальный конфликт кодеков.

На стороне загрузки я столкнулся с одним и тем же результатом загрузки изображений как с моим собственным кодом .net, так и с использованием Paint.net.

Наконец, вот образец в нормальном разрешении, так что вы можете загрузить его и попробовать сами . Загрузка его в некоторые программы даст вам хороший градиент (например, ваш браузер), но загрузка его с вашим собственным кодом .Net или Paint.Net даст вам размытый градиент, подобный приведенному выше, отрисованному с использованием только 16 оттенков серого.

enter image description here

Кто-нибудь знает об этом больше, как далеко это зашло и какие хорошие обходные пути могут быть?

12
задан John Robertson 13 May 2011 в 14:53
поделиться