MATLAB Answers

Concatenating images from image files

67 views (last 30 days)
A
A on 27 May 2011
Commented: Image Analyst on 11 Mar 2016
Hello! I have a series of images saved in a folder, and I have written a short program to open two of these image files, concatenate them (preferably vertically, although for now I am trying horizontally), then save this new image to the same folder. This is what I have written so far:
function concatentateImages
%this is the folder where the original images are located path='/home/packremote/SharedDocuments/Amina/zEXAMPLE/';
file1 = strcat(cr45e__ch_21', '.pdf');
[image1,map1] = imread(graph1);
file2 = strcat('cr45f__ch_24', '.jpg');
[image2,map2] = imread(graph2);
image1 = ind2rgb(image1,map1);
image2 = ind2rgb(image2,map2);
image3 = cat(2,image1,image2);
%this is the directory where I want to save the new images
dircase=('/home/packremote/SharedDocuments/Amina/zEXAMPLE/');
nombrejpg=strcat(dircase, 'test', jpgext)
saveas(f, nombrejpg, 'jpg')
fclose('all');
However, I keep getting an error that my files do not exist, though I am certain the names are copied correctly.
I am currently using jpg files, but the format can be easily converted.
Any input on how to fix this error, or a nicer way of preforming this task is greatly appreciated!
Cheers,
Amina
  2 Comments
A
A on 27 May 2011
CAT arguments dimensions are not consistent.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 27 May 2011
iwidth = max(size(image1,2),size(image2,2));
if size(image1,2) < iwidth
image1(1,iwidth,1) = 0;
end
if size(image2,2) < iwidth
image2(1,iwidth,1) = 0;
end
image3 = cat(1,image1,image2);
  6 Comments
Walter Roberson
Walter Roberson on 27 May 2011
I'm not sure how nan will help, but anyhow:
iwidth = max(size(image1,2),size(image2,2));
if size(image1,2) < iwidth
image1(:,end+1:iwidth,1) = nan;
end
if size(image2,2) < iwidth
image2(:,end+1:iwidth,1) = nan;
end
image3 = cat(1,image1,image2);

Sign in to comment.

More Answers (2)

Harsha Vardhan Rao  Avunoori
Are you specifying the proper directory/path when you are executing your code ? Can you please post the exact error so that it would be a little bit easier to understand what's causing you trouble.
  4 Comments
Walter Roberson
Walter Roberson on 27 May 2011
Your line
file1 = strcat(cr45e__ch_21', '.pdf');
should be
file1 = strcat('cr45e__ch_21', '.pdf');
However, without that, the code would not have reached as far as reading the file.
Please post your current code.

Sign in to comment.


Gowtham N
Gowtham N on 10 Mar 2016
Hello. I want to read many images from a folder and want to concatinate the same in horizontal,how to do this with for loop?
  1 Comment
Image Analyst
Image Analyst on 11 Mar 2016
to stitch images together horizontally, use a comma:
wideImage = [image1, image2];
You can find a more general stitch program in the File Exchange: http://www.mathworks.com/matlabcentral/fileexchange/25797-stitch

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by