How to combine images horizontally of slightly different heights

13 views (last 30 days)
Hi, I have a folder of images that I want to stitch together horizontally (it would be nice to know how to do it vertically too). The images are taken from cropping an image on a screen, but as an example I have chopped up a football image. I don't need to put the football back together seamlessly, but it would be good to have the images stitched back together so that the top edges of each pic are aligned and they are side by side, no stretching of an image in either dimension. It doesn't matter if it looks a bit haphazard as long as there is no stretching.
I have commented out what is giving the following error:-
Error using horzcat Dimensions of arrays being concatenated are not consistent.
Error in stitchy_02 (line 27) imageStitch = [cStitched_start, imageStitch];
Code:-
clear all
close all
clc
hFig=figure('units','normalized','outerposition',[0 0 1 1]);
pics=dir('/Users/imagexpertinc/Desktop/ball_pics/*.png')
amount=numel(pics)
cStitched_start=imread(pics(1).name);
sizes=zeros(amount,3)%preallocate a table for size data
for k=1 : amount
imageStitch=imread(pics(k).name);
set(0,'CurrentFigure',hFig)
subplot(2,amount,k);
imshow(imageStitch)
title(['Pic ' num2str(k)])
%%Determine Image Sizes
% sizes(k,:)=size(imageStitch)%length width dimension
% BiggerImage=max(sizes)
% SmallerImage=min(sizes)
%
%
% imageStitch=imread(pics(k).name);
% imageStitch = [cStitched_start, imageStitch];
% set(0,'CurrentFigure',hFig)
% subplot(2,2, 1:2);
% imshow(imageStitch);
%
end

Accepted Answer

KSSV
KSSV on 20 Jun 2018
Edited: KSSV on 20 Jun 2018
Read about imresize. Use imresize and get all the images to same dimensions.
files = dir('*.png') ;
N = length(files) ;
I = cell(N,1) ;
for i = 1:N
I1 = imread(files(i).name) ;
I{i} = imresize(I1,[526,134]) ;
end
I = cat(2,I{:}) ;
imshow(I) ;
  2 Comments
Stephen Devlin
Stephen Devlin on 20 Jun 2018
Edited: Stephen Devlin on 20 Jun 2018
Thank you KSSV, it works but with a bit of stretching,I'll go off to read about imresize (I had no idea there was a function for it)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!