Я работаю с большим количеством данных монохромных изображений, и сегодня утром я заметил, что существует значительная разница между способами libjpeg и. Кодек Net jpeg обрабатывает монохромные данные. Похоже, что монохромное изображение, сохраненное с ЛЮБОЙ настройкой качества с использованием libjpeg и открытое с использованием стандартного кодека .Net jpeg, на самом деле загружается только с 16 различными оттенками серого, а все промежуточные оттенки отображаются как пунктирные.
Вот гистограмма плавного градиента, сохраненная libjpeg и загруженная .net
Гистограмма должна быть идеально ровной.
А вот (увеличенный) образец того, как выглядит этот градиент (он должен быть идеально плавный переход)
Это должен быть плавный переход от серого 85 слева к серому 136 справа, но на самом деле визуализируются только 4 оттенка серого, чтобы сделать этот переход.
Мой вопрос: сумасшедший ли я, и если не только насколько далеко идет ли это несоответствие кодеков? Есть ли хороший обходной путь, если вы используете обе библиотеки в разных программах?
Я не виню ни один из кодеков, а просто указываю на то, что кажется несоответствием. Я заметил это с изображениями, которые, как я знал, были созданы с использованием libjpeg, предположил, что это проблема с настройкой качества, попытался использовать средство изменения размера изображений faststone для создания тестовых изображений и получил тот же результат, попытался использовать irfanview и снова получил тот же результат. Поскольку обе эти программы должны использовать некоторую библиотеку jpeg, я склонен предполагать, что они также используют libjpeg и существует реальный конфликт кодеков.
На стороне загрузки я столкнулся с одним и тем же результатом загрузки изображений как с моим собственным кодом .net, так и с использованием Paint.net.
Наконец, вот образец в нормальном разрешении, так что вы можете загрузить его и попробовать сами . Загрузка его в некоторые программы даст вам хороший градиент (например, ваш браузер), но загрузка его с вашим собственным кодом .Net или Paint.Net даст вам размытый градиент, подобный приведенному выше, отрисованному с использованием только 16 оттенков серого.
Кто-нибудь знает об этом больше, как далеко это зашло и какие хорошие обходные пути могут быть?