improving resolution of jpeg images in matlab - matlab

I have a jpeg which has reasonable resolution. I am looking for a method of improving the resolution of the image and then exporting it into a pdf file.
Currently I have imported the jpeg:
Img = imread('F:Work\fig.jpg');
From here I was hoping of exporting the figure by using the export_fig function:
https://sites.google.com/site/oliverwoodford/software/export_fig
But I am struggling on generating the figure which is required prior to exporting the image.

What part of the figure creation process are you struggling with? The general approach I would use is
Img = imread('F:Work\fig.jpg');
bigImg = imresize(Img,2);
imshow(bigImg);
export_fig test.png -native;
Check Matlab's documentation for different interpolation options that can be used when resizing images.

Related

Load PDF Image into MATLAB

I have a PDF of building schematics. I would like to load it into MATLAB, and visualize the image via a GUI, so I can measure distances and such for some calculations.
I have no idea if this is even possible?
Furthermore, the PDF has an embedded scale (i.e. 1 cm = 1 meter). If I can extract this as well, that would be awesome.
I found extractFileText which can be used to extract text, but not much else.
I found the easiest way to do this was to convert the pdf to a image, for example using imagemagick. See this question
If you add an example of the image someone might be able to suggest some ideas for extracting the scale information using image processing.

How to convert .png to bitmap (.bmp) in MATLAB?

I am having difficulties converting a png file of simple black-coloured patterns I made using Illustrator into a bitmap. I need to do this in order to 3D print it (vector printer).
I was instructed to use MATLAB to do it however I tried using imread and imwrite but I'm rather confused as to what the first argument of imwrite, A, should be? Is there a particular format I need to use for it to work?
I tried doing it with an online converter and it gave me the same exact image but of type .bmp. Is that what's meant to happen?
I would appreciate any insight on the problem.
Use imread to read your png, then imwrite to save it in bmp format.
Implementation:
pic = imread('mypic.png');
imwrite(pic,'mypic.bmp','bmp');

Copy figure in Matlab

I am asking for a solution to the blurred image I get when I use copy figure option in Matlab. For example, when I plot 3d figure in matlab I get the following image (It is the result of printscreen!)..
However, when I use the option copy figure I get a blurred image as the following image
.
How can I avoid this as I need to get high resolution image using copy figure option. Thank you in advance for any help you may lend.
By default, the figure is copied as an Enhanced Metafile (a color graphics format) which works for basic plots such as bar plots, line plots, and other 2D plots but may yield undesirable results for more complex plots as in your case. This is because the rendering of the Metafile content is controlled my Microsoft Word and it may render things differently than MATLAB.
If you need a high resolution image, I would recommend using the print command where you can specify the desired resolution (using the -r option). Then you can import the resulting image into Word
print(gcf, 'myfile.png', '-dpng', '-r300')
Alternately, you can use export_fig from the File Exchange which better preserves the appearance
Another option would be to change the format used by Copy Figure to tell it to use a bitmap instead
Or you can call Copy Figure programmatically and specify a different format (either a bitmap or PDF)
print(gcf, '-clipboard', '-dpdf')

exporting figure to eps file

I am trying to export a figure which includes highlighting of regions - something like this: Highlight parts of matlab plot. Unfortunately, when I export the figures to .eps files the size is of the order of ~10 MB... Thus, when I include them in a tex file, the quality is severely degraded. As expected this problem seems to occur due to the use of the area function for the highlighting. Is there any workaround on this?
You have transparency in your plot which requires the renderer to be OpenGL which causes any EPS to not really be vector graphics but rather bitmaps coerced in some strange way. This is why the file size is much larger than what you would expect for vector graphics. If you open the resulting EPS file with an external editor (Illustrator, Inkscape, etc.) you will see what I am talking about. As a side-note, transparency isn't technically supported in EPS files.
Your options are really to
Save your figures as something else such as TIFF or PNG
You could try saving the figure as an EPS using export_fig from the file exchange but you will likely still have the same issue.
Turn off transparency, save to an EPS, and use Illustrator or an external program to change the transparency and try to save as an EPS file and see if you get better results.

how to save imageof axes for high resolution in matlab GUI

I trying save image with the comand 'getframe' but resolution is very low, so I can not give zoom. for now I'm using the code:
[arq,dir] = uiputfile('*.jpg','Output Files');
fileName=fullfile(dir,arq);
f=getframe(handles.axes1);
[x,map]=frame2im(f);
imwrite(x,fileName,'jpg');
I need save in jpg and also need save the label (x,y) in graph. How do ? There is another command better than the getframe??
Print is a good command?
Thanks
try using something other than jpg, it doesn't scale well. eps is a good choice as it is a vector format.
Try exportfig from FEX: exportfig