Экспорт графиков серфинга MATLAB с цветными полосами приводит к повреждению файлов png с использованием аппаратного рендерера opengl.

Когда я экспортирую 2D-график поверхности с цветовой полосой из MATLAB в файл png, это приводит к повреждению изображений, когда я использую аппаратный рендерер opengl, как показано здесь:

поврежденный график поверхности png экспорт из MATLAB

Все остальное работает нормально. Но после того, как я создал одну фигуру с цветовой полосой, все остальные графики поверхности, которые я экспортирую в файлы png, повреждены, даже если они не содержат цветных полос.

opengl info в MATLAB дает следующий результат:

    Version         = 3.0 Mesa 10.1.0
    Vendor          = Intel Open Source Technology Center
    Renderer        = Mesa DRI Intel(R) Haswell Desktop 
    MaxTextureSize  = 8192
    Visual          = 0x20 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
    Software        = false
    # of Extensions = 190

    Driver Bug Workarounds:
    OpenGLBitmapZbufferBug    = 0
    OpenGLWobbleTesselatorBug = 0
    OpenGLLineSmoothingBug    = 0
    OpenGLClippedImageBug     = 0
    OpenGLEraseModeBug        = 0

Я пробовал все эти обходные пути OpenGL, но ничего не помогло.

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

Моя система:

  • Ядро: 3.13.0-24-универсальная 64-битная
  • Процессор: Intel Haswell i7 4770K
  • Графика: Intel HD 4000
  • Версия MATLAB: R2013b

На компьютере моего коллеги, который точно такой же, но с другой ОС (debian wheezy), этой проблемы не возникает. На своем компьютере opengl info выдает:

    Version         = 2.1 Mesa 8.0.5
    Vendor          = VMware, Inc.
    Renderer        = Gallium 0.4 on llvmpipe (LLVM 0x209)
    MaxTextureSize  = 4096
    Visual          = 0xfc (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
    Software        = false
    # of Extensions = 143

    Driver Bug Workarounds:
    OpenGLBitmapZbufferBug    = 0
    OpenGLWobbleTesselatorBug = 0
    OpenGLLineSmoothingBug    = 0
    OpenGLClippedImageBug     = 0
    OpenGLEraseModeBug        = 0

Может быть, в его случае это работает, потому что Gallium/llvmpipe на самом деле является программным рендерером?

В чем проблема с цветной полосой?


person GriffinPeterson    schedule 08.05.2014    source источник
comment
Как вы сделали экспорт, который не работал? Команда print?   -  person Raab70    schedule 08.05.2014
comment
@ Raab70 Как использование print(...,'-r300','-dpng'), так и использование настроек экспорта из меню рисунка дают одинаковый результат.   -  person GriffinPeterson    schedule 08.05.2014
comment
Пробовали без указания dpi?   -  person Raab70    schedule 08.05.2014
comment
@Raab70 Raab70 Я пробовал все dpi (также автоматически) с каждым средством визуализации, работает только zbuffer.   -  person GriffinPeterson    schedule 08.05.2014
comment
каждый рендер? также painters (единственный, который отображает векторную графику)? - тоже не работает?   -  person thewaywewalk    schedule 08.05.2014
comment
Извините, я что-то перепутал. painters работает, проблема с пикселизированными шрифтами исчезла после установки следующих пакетов: `gsfonts-X11, gsfonts-other, xfonts-100dpi` и xfonts-75dpi. Я отредактирую свой вопрос соответственно.   -  person GriffinPeterson    schedule 08.05.2014
comment
Непонятно, почему вы хотите использовать OpenGL? Также пробовали ли вы export_fig из FileExchange?   -  person yuk    schedule 08.05.2014
comment
Вы пытались использовать opengl software ? Изображения не такого высокого разрешения, но иногда это исправляет ошибки.   -  person Clemens    schedule 18.05.2014
comment
Работает ли команда Файл › Сохранить как... для экспорта в PNG? Для согласованности вы должны предоставить код для создания фигуры, которая приводит к этой ситуации. Это какой-то поверхностный график, когда 'Renderer' был установлен на 'OpenGL'? Необходимо ли присутствие colorbar?   -  person horchler    schedule 20.05.2014
comment
@Clemens: Да, с «программным обеспечением opengl» это работает. У моего коллеги точно такой же компьютер, только ОС другая (debian wheezy), а на его компе тоже работает "opengl hardware".   -  person GriffinPeterson    schedule 27.05.2014
comment
@horchler: Вау. Это «цветовая полоса». Без него все работает нормально. После создания одной фигуры с цветовой полосой я получаю поврежденные png для каждой другой фигуры, которую я создаю и экспортирую, даже если у них нет цветовой полосы.   -  person GriffinPeterson    schedule 27.05.2014
comment
Сейчас я редактирую вопрос, чтобы подчеркнуть проблему с цветовой полосой.   -  person GriffinPeterson    schedule 27.05.2014
comment
Вы могли бы попробовать обновить свой opengl, обновив графический драйвер?   -  person Clemens    schedule 28.05.2014
comment
Я использую самый последний стабильный драйвер от Intel.   -  person GriffinPeterson    schedule 28.05.2014
comment
См. здесь. Команда opengl('OpenGLClippedImageBug',1) случайно не решает эту проблему.   -  person horchler    schedule 30.05.2014
comment
@horchler: Нет, opengl('OpenGLClippedImageBug',1) не решает проблему.   -  person GriffinPeterson    schedule 03.06.2014
comment
@GriffinPeterson Либо это другая проблема с драйвером Intel gfx (их довольно много), либо ваше окно рендеринга OpenGL не может экспортировать данные из-за настройки рендеринга или контекста устройства во время инициализации окна OpenGL (аналогично попытке воспроизведения видео на экране печати) попробуйте другой драйвер или даже программный эмулятор, такой как nwemulate (но я не уверен, что он работает и на Intel)... чтобы более точно определить проблему.   -  person Spektre    schedule 28.06.2014


Ответы (1)


К сожалению, MATLAB не фантастичен, когда дело доходит до стандартизации, проблема с картой цветов заключается в том, что при сохранении или использовании с чем-то другим, кроме MATLAB, закодированное изображение не сохраняется или не генерируется для удобного использования в других приложениях, потому что MATLAB оптимизирует отображение только для приложений MATLAB, если я найду пример, который может вам помочь, я отредактирую свой ответ, но я надеюсь, что это прольет свет на вашу проблему.

В противном случае это ошибка Matlab и неправильное сохранение изображений.

person Pariah    schedule 07.10.2014