Pasting multiple images, but gets cut off (PLEASE HELP!)
2 次查看(过去 30 天)
显示 更早的评论
Hello,
I am pasting multiple images onto a black image; however, some of the images are no longer shown at ~the 4806 pixel matrix column. You should be able to see 10 leg segments, but here you can only see 3 and a half (the 4th image is cut). Please help! Why is this happening? Thanks!
![](/matlabcentral/answers/uploaded_files/5319/alignedImage.png)
code adapted from Image Analyst.
if true % %% ALIGN ALL LEG SEGMENTS clc; % Clear the command window. close all; % Close all figures (except those of imtool.) imtool close all; % Close all imtool figures. clear; % Erase all existing variables. workspace; % Make sure the workspace panel is showing. fontSize = 20; format compact; % grayImage = imread('Blackout.png'); % Get the dimensions of the image. % numberOfColorBands should be = 1. [I1R I1C numberOfColorBands] = size(grayImage); % % imread smaller image rotatedImage2=imread('rotCoxa.png'); [I2R I2C] = size(rotatedImage2); rotatedImage3=imread('rotTrochanter.png'); [I3R I3C] = size(rotatedImage3); rotatedImage4=imread('rotFemur.png'); [I4R I4C] = size(rotatedImage4); rotatedImage5=imread('rotTarsus5.png'); [I5R I5C] = size(rotatedImage5); rotatedImage6=imread('rotTarsus4.png'); [I6R I6C] = size(rotatedImage6); rotatedImage7=imread('rotTarsus3.png'); [I7R I7C] = size(rotatedImage7); rotatedImage8=imread('rotTarsus2.png'); [I8R I8C] = size(rotatedImage8); rotatedImage9=imread('rotTarsus1.png'); [I9R I9C] = size(rotatedImage9); rotatedImage10=imread('rotTarsus0.png'); [I10R I10C] = size(rotatedImage10); % % Paste it onto the original image % Coxa x = 1; y = I1R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I2R - 1; r2 = min([r2 I1R]); c2 = c1 + I2C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage2(1:(r2-r1+1), 1:(c2-c1+1)); % % Trochanter x = I2C; y = I1R/2+I2R/2-I3R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I3R - 1; r2 = min([r2 I1R]); c2 = c1 + I3C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage3(1:(r2-r1+1), 1:(c2-c1+1)); % %Femur x = I2C+I3C; y = I1R/2+I2R/2-I4R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I4R - 1; r2 = min([r2 I1R]); c2 = c1 + I4C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage4(1:(r2-r1+1), 1:(c2-c1+1)); % %Tarsus 5 x = I2C+I3C+I4C; y = I1R/2+I2R/2-I5R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I5R - 1; r2 = min([r2 I1R]); c2 = c1 + I5C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage5(1:(r2-r1+1), 1:(c2-c1+1)); % %Tarsus 4 x = I2C+I3C+I4C+I5C; y = I1R/2+I2R/2-I6R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I6R - 1; r2 = min([r2 I1R]); c2 = c1 + I6C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage6(1:(r2-r1+1), 1:(c2-c1+1)); % %Tarsus 3 x = I2C+I3C+I4C+I5C+I6C; y = I1R/2+I2R/2-I7R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I7R - 1; r2 = min([r2 I1R]); c2 = c1 + I7C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage7(1:(r2-r1+1), 1:(c2-c1+1)); % %Tarsus 2 x = I2C+I3C+I4C+I5C+I6C+I7C; y = I1R/2+I2R/2-I8R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I8R - 1; r2 = min([r2 I1R]); c2 = c1 + I8C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage8(1:(r2-r1+1), 1:(c2-c1+1)); % %Tarsus 1 x = I2C+I3C+I4C+I5C+I6C+I7C+I8C; y = I1R/2+I2R/2-I9R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I9R - 1; r2 = min([r2 I1R]); c2 = c1 + I9C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage9(1:(r2-r1+1), 1:(c2-c1+1)); % %Tarsus 0 x = I2C+I3C+I4C+I5C+I6C+I7C+I8C+I9C; y = I1R/2+I2R/2-I10R/2; % Determine the pasting boundaries. r1 = int32(y); c1 = int32(x); r2 = r1 + I10R - 1; r2 = min([r2 I1R]); c2 = c1 + I10C - 1; c2 = min([c2, I1R]); plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-'); % Paste as much of croppedImage as will fit into the original image. grayImage(r1:r2, c1:c2) = rotatedImage10(1:(r2-r1+1), 1:(c2-c1+1)); % imshow(grayImage); axis on; title('Region that you defined pasted onto original', 'FontSize', fontSize); % % Save rotated image imwrite(grayImage, 'alignedImage.png');
end
0 个评论
采纳的回答
更多回答(1 个)
Walter Roberson
2013-12-3
That code will only paste images to the maximum width of the original image 'Blackout.png'
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!