How to crop a square that has a rotational angle?

6 Ansichten (letzte 30 Tage)
Guilherme Pelegrini
Guilherme Pelegrini am 9 Mär. 2017
Beantwortet: Image Analyst am 19 Apr. 2022
I need to crop one square of this image:
As you can see, I can't use imcrop() because it isn't horizontal, the squares has a rotational angle, and the region cropped need to be precisely on the edge of the line.
How can I do it?

Antworten (3)

Massimo Zanetti
Massimo Zanetti am 9 Mär. 2017
Bearbeitet: Massimo Zanetti am 9 Mär. 2017
Inspect this: roipoly
Here is an example of what you can do:
%open an image
A = imread('coins.png');
%run roi tool, where you can define your polygon
BW = roipoly(A);
%extract image pixels in the roi
S = regionprops(BW,'ConvexImage','BoundingBox');
r = S.BoundingBox;
Q = A( round(r(2)) + (1:r(4)) , round(r(1)) + (1:r(3)) );
%display cropped image
im = imagesc(Q);
im.AlphaData = S.ConvexImage;
axis image; colormap gray;
In the roipoly window track your points manually to define a polygon, as in the picture:
Then, right-click and "Create Mask", you will get your cropped image:
  1 Kommentar
Selina
Selina am 1 Apr. 2019
Hi,
Is it possible to use rectangle crop using the ROI function? If so, can anyone please send a sample coding?

Melden Sie sich an, um zu kommentieren.


cui,xingxing
cui,xingxing am 5 Mär. 2022
I wrote an enhanced 'imcrop' function that supports rotating rectangle interception, but yours is an irregular quadrilateral, but you can also refer to what I wrote with 'estimateGeometricTransform2D' to estimate the conversion matrix, and then bring in the 'imwarp' function can be completed arbitrary shape interception, I hope it helps you

Image Analyst
Image Analyst am 19 Apr. 2022
If you need to find the white lines automatically, you can try hough(), houghlines(), or radon().
I'm attaching a demo for how to use the radon transform to find the angle or rotation, and then it uses imrotate() to rotate the image until it's straight. Adapt as needed.

Kategorien

Mehr zu Geometric Transformation and Image Registration finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by