what (:, :, :) syntax does?

29 ビュー (過去 30 日間)
Emmanuel Arias Polanco
Emmanuel Arias Polanco 2022 年 5 月 24 日
編集済み: Jonas 2022 年 5 月 24 日
Hi, I'm new in MatLab and my teacher gave us a code to crop images and split them into his RGB components. This section it's suposed to crop the image (I1) I think (am I right?) and display the cropped image (I2)
u=round(ginput(2));
P12 = u(1,2);
P22 = u(2,2);
P11 = u(1,1);
P21 = u(2,1);
I2=I1(P12:P22,P11:P21,:);
figure
imshow(I2)
axis equal
I think I know what the first line does, it gets two inputs from the mouse and then round it to the nearest integer to finally save them into a vector 'u' right?, in that case, my doubt is what those u(1,2) means, how do they work? what are those 1 and 2 into them? And, how that syntax I2=I1(P12:P22,P11:P21,:) works? why is only the : in the final?
I know I could get the answer by reading the documentation, but what documentation do I have to read? Thank you in advance.
  2 件のコメント
Lateef Adewale Kareem
Lateef Adewale Kareem 2022 年 5 月 24 日
you can use that to index 3 dimensional space in a 4 or higher dimensional data.
The question is why would you need that in the first place
Voss
Voss 2022 年 5 月 24 日
@Emmanuel Arias Polanco: Here is some documentation you can read that will answer all of those questions:

サインインしてコメントする。

採用された回答

Jonas
Jonas 2022 年 5 月 24 日
編集済み: Jonas 2022 年 5 月 24 日
u=round(ginput(2));
gets two points with rounded x and y values. the values are stored as [x1 y1; x2 y2]
it follows that
P12 = u(1,2); % first y coordinate
P22 = u(2,2); % second y coordinate
P11 = u(1,1); % first x coordinate
P21 = u(2,1); % second x coordinate
following
I1(firstY:secondY,firstX:secondX,:)
which cuts in horizontal and vertical between the specified x and y values.
the : in the third dimension means that all entries along the third dimension are kept. the object has three dimensions since it has 3 layers per point, containing the rgb values of the colored pixel
so the given code just cuts the image but does not split into the rgb contents, since all entries are kept along the 3rd dimension.
if you want to see the split components, e.g. to see only the red channel also displayed in red, use e.g.
I3=I2; % crrate copy of the cut image part
I3(:,:,2:3)=0; % set all values of the g and b layer to 0
imshow(I3);

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeImages についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by