Add a colum and a row of blank (white) values in an Image
Show older comments
Hello
I was thinking what would be the easiest way to add an extra column and row with values (255) in my image. I was thinking that is possible by reading the image size and adding an extra value to the dimensions but is there a easier and faster way ?
Thank you in advance
Accepted Answer
More Answers (2)
Geoff
on 4 Jun 2012
Your best options (as far as I know) are:
1. Resize the image twice (once for new row, once for new column)
im(end+1, :) = 255; % new row at end
im(:, end+1) = 255; % new column at end
2. Create a new image, and copy your subimage in.
im1 = 255 * ones(size(im)+1);
im1( 1:end-1, 1:end-1 ) = im;
% Or, if large image, avoid unnecessary multiplications
im1 = zeros(size(im)+1);
im1( 1:end-1, 1:end-1 ) = im;
im1( end, : ) = 255;
im1( :, end ) = 255;
If adding data at the end, I would probably opt for (1). At worst, MatLab will create a new one and copy the data. At best, it'll expand the memory block and efficiently shuffle your data correctly. Otherwise, if you need to add rows/columns anywhere but the end, I would opt for (2).
Image Analyst
on 4 Jun 2012
Try this little demo:
yourImage = magic(6) % Just a demo image.
[rows columns numberOfColorChannels] = size(yourImage);
if numberOfColorChannels == 1
% Monochrome (grayscale) image.
yourImage(rows+1, :) = 255
yourImage(:, columns+1) = 255
else
% For a color image. I think this should work but I didn't test it.
for c = 1 : numberOfColorChannels
yourImage(rows+1, :, c) = 255
yourImage(:, columns+1, c) = 255
end
end
Categories
Find more on Image Arithmetic in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!