Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

print plots to tiff in accurate pixel resolution

Asked by Christoph on 5 Feb 2013

Hey everybody!

I am currently fighting with the Matlab print function and I don't know how to get the results I need.

The idea is pretty simple: I read 512x512 px images, then do some feature extraction, overlay the features as polygons using patch() and then I want to write the image back in exactly the same resolution.

However

output_size = [512 512];%Size in pixels
resolution = 300;%Resolution in DPI
set(fig,'paperunits','inches','paperposition',[0 0 output_size/resolution]);
print(fig,'-dtiffn',['-r' num2str(resolution)],'-painters',tiff_name_afm)

Does not work. Indeed the output image IS 512x512, but only because of a large white canvas, whilst the image and graph itself is a lot smaller.

Can anyone help me with this?

Best wishes, Chris

0 Comments

Christoph

Products

No products are associated with this question.

2 Answers

Answer by Walter Roberson on 5 Feb 2013
Accepted answer

If you are not needing shading, then instead of using patch() to do the overlays, use poly2mask() to convert the polygons to pixel locations, and write the new values into the image array; then imwrite() the result.

If you need transparency then use the alpha equation to calculate the result:

(1-alpha) * background + alpha * foreground

0 Comments

Walter Roberson
Answer by Christoph on 5 Feb 2013

I would really like to keep the patch if possible, as the results look very nice (different line and face colors) and I can show the datapoints.

Is the mix of imshow and patch responsible for the misbehavior?

Thank you for your tip!

1 Comment

Walter Roberson on 5 Feb 2013

Possibly setting PaperSize is needed; maybe PaperPositionMode as well.

Mixing imshow and patch is not responsible for this difficulty. Printing is a pain.

If setting the PaperSize does not work, then you might get more deterministic output from the File Exchange contribution export_fig

Do you really want to print the whole fig, toolbars and all ? If not then you can export_fig() the axis, or you could toss all the drawing inside a uipanel() and export_fig() or print() the uipanel.

Christoph

Contact us