2016-09-07 4 views
0

Я пытаюсь сохранить большое изображение (1641x6139) при полном разрешении с помощью MATLAB с осями. Сделать это без осей легко с помощью команды imwrite. Для построения изображения с осями, я пишу:Экспорт изображения с полным разрешением с осями в MATLAB

image(x,y,my_image); 

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

Например, где Н является фигура ручку, я попытался:

set(H, 'PaperPosition', [0, 0, width , height ]) 
print -dpng -r500 my_filename 

Увеличение ширины, высоты, или разрешение все имело эффект увеличения числа пикселов в изображении, но очевидно, пикселизация без изменений.

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

export_fig(my_filename,'-a1','-native') 

Вот несколько фотографий, показывающие примерно такой же масштаб изображения в части моего изображения:

zoomed in images (original and using export_fig)

первый является исходное изображение, а второй является изображение в результате от export_fig. Второй выглядит неровным, хотя еще раз обратите внимание, что каждое изображение содержит примерно одинаковое количество фактических пикселей.

Любые советы/решения были бы высоко оценены! Эта проблема была намного более расстраивающей, чем я ожидал.

+1

Есть ли какая-то особая причина, по которой вам нужно сначала нарисовать изображение на осях, а не напрямую записывать его в файл изображения? –

+0

Кстати, export_fig -a1 -native, похоже, создает изображение с полным разрешением с осями на моей машине, по крайней мере с 2015a и rand (2000, 2000, 3) image –

+0

Если вы знаете способ записи оси непосредственно к изображению это было бы хорошим решением. – Llouis

ответ

0

Я понял, простое решение. Во-первых, я создаю пустое изображение правильного размера, добавляю оси, а затем использую export_fig для генерации изображения осей. Затем я пишу свое изображение с полным разрешением в матрицу изображений и сохраняю полученное изображение с помощью imwrite.

Смежные вопросы