Можно ли увеличить разрешение точек в Matlab export_fig? - PullRequest
3 голосов
/ 11 декабря 2019

Допустим, у меня есть фоновое изображение и несколько дополнительных точек, нанесенных на него. Я привел пример ниже, и фоновое изображение - просто простое белое изображение просто для простоты:

testim=ones(1024,1024);

imshow(testim); hold on

for j=1:20
    plot(20+.33,20.27+j*10, '.r','MarkerSize',4);
end
for j=1:20
    plot(300+.33,20.27+j*10, '.r','MarkerSize',4);
end
for j=1:15
    plot(j*20+.33,220.27, '.r','MarkerSize',4);
end
for j=1:15
    plot(j*20+.33,20.27, '.r','MarkerSize',4);
end

Когда я увеличиваю изображение Matlab, оно выглядит следующим образом:

enter image description here

Затем я уменьшаю масштаб до исходного размера фигуры и сохраняю его с помощью export_fig:

export_fig exportFig-q100-painters-testim.png -q100 -painters
export_fig exportFig-q102-painters-testim.png -q102 -painters

Когда я открываю эти файлы png иПри увеличении изображения изображение выглядит следующим образом:

enter image description here

Это не то, чего я хотел, так как надеялся, что каждая точка на исходном графике станет однойв пикселях в png-файле с увеличенным размером, но вместо этого для каждого центрального пикселя имеется около 6 красных обесцвеченных пикселей из-за размытия. Есть ли способ избавиться от этого размытия в export_fig?

РЕДАКТИРОВАТЬ:

Когда я использую print(gcf,'foo.png','-dpng','-r300'), чтобы сохранить рисунок как изображение, точки все еще очень размыты, даже когда яотрегулируйте dpi, чтобы иметь такие значения, как 1, 100, 300, 900 и т. д.

EDIT2:

Проще увидеть, как export_fig out.png -q100 -painters -a1 не помогает при попытке построения графика ниже:

testim=rand(1024,1024);

imshow(testim); hold on

for j=1:100
    plot(20+.33,20.27+j*2, '.r','MarkerSize',4);
end
for j=1:100
    plot(300+.33,20.27+j*2, '.r','MarkerSize',4);
end
for j=1:60
    plot(j*5+.33,220.27, '.r','MarkerSize',4);
end
for j=1:60
    plot(j*5+.33,20.27, '.r','MarkerSize',4);
end

EDIT3

Когда я использую saveas для сохранения в формате PDF, когда фоновое изображение 1024x1024 со следующим кодом:

testim=rand(1024,1024);
f2=figure(2); imshow(testim); hold on
plot(217.47, 227.3, '.r','MarkerSize',1);
plot(218.74, 226.8, '.r','MarkerSize',1);
plot(219.2, 227.1, '.r','MarkerSize',1);
plot(219.1, 228.5, '.r','MarkerSize',1);
saveas(f2, 'saveas-pdf-testim-1024-marker1.pdf');

, результат будет следующим:

enter image description here

Но выглядит плохо, когда фоновое изображение 4096x4096:

testim=rand(4096,4096);
f2=figure(2); imshow(testim); hold on
plot(217.47, 227.3, '.r','MarkerSize',1);
plot(218.74, 226.8, '.r','MarkerSize',1);
plot(219.2, 227.1, '.r','MarkerSize',1);
plot(219.1, 228.5, '.r','MarkerSize',1);
saveas(f2, 'saveas-pdf-testim-4096-marker1.pdf');

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...