How to shift rows in a matrix by consecutive values (e.g row one 0, second row one space, third row two spaces )
3 ビュー (過去 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!