Add a colum and a row of blank (white) values in an Image
显示 更早的评论
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
采纳的回答
更多回答(2 个)
Geoff
2012-6-4
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
2012-6-4
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
类别
在 帮助中心 和 File Exchange 中查找有关 Image Arithmetic 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!