How to shift rows in a matrix by consecutive values (e.g row one 0, second row one space, third row two spaces )
1 次查看(过去 30 天)
显示 更早的评论
I am having trouble with a video and i need to get straight every frame of it. The frames are shifted. Herein the matrix, it contains the RGB components for a frame.
0 个评论
回答(2 个)
Image Analyst
2017-12-29
Since the very frist row is the only one that gets overwritten, and the last time it gets overwritten will be the Nth row which gets put into the (N-1)st row (which is again the first row), your final image will be
rgbImage(1, :, :) = rgbImage(end, :, :);
Now, if you had said "second frame gets shifted up 2 lines, third frame gets shifted up 3 lines" then that is a completely different thing that what you asked about only shifting the second row, the third row, etc.
0 个评论
Image Analyst
2017-12-29
To shear an image sideways, see the help/demo for imwarp():
% Apply Horizontal Shear to Image
% Read grayscale image into workspace and display it.
% I = imread('cameraman.tif');
I = imread('peppers.png');
subplot(1, 2, 1);
imshow(I)
% Create a 2-D geometric transformation object.
tform = affine2d([1 0 0; .5 1 0; 0 0 1])
% Apply the transformation to the image.
J = imwarp(I,tform);
subplot(1, 2, 2);
imshow(J)
% Copyright 2015 The MathWorks, Inc.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/180497/image.png)
Make easy adaptations to shear it the other direction.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!