How to find minimum number of largest square of 1 in an 2D bool matrix
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
raym
am 19 Okt. 2019
Beantwortet: Walter Roberson
am 20 Okt. 2019
I have a 2D bool image (dimension 81x65) with several irregular regions black(mainly in the middle) and other pixes white(mainly in the outer part).
Is there a way to split the white region into square pieces as large as possible, and get the position and size for each square?
Thanks.
4 Kommentare
Walter Roberson
am 20 Okt. 2019
What would be the desired output in the above case? And should all of the square be the same size?
Akzeptierte Antwort
Walter Roberson
am 20 Okt. 2019
D = bwdistgeodesic(logical(YourImage), ~YourImage);
Now iterate. if there are no finite values in D, break the loop. Find the largest value in D. It is at the corner of a square of white pixels of that dimension, but you will need to do a little work to figure out which corner it is. When you have figured out which corner it is, record that square location and then set all the D locations inside that square to be inf or nan. Now return back to the beginning of the loop (looking for the largest remaining value)
This is a "greedy" algorithm. It makes no attempt at all to be consistent in block sizes. If there were a situation in which two squares of equal size plus one small square would cover a section, then the algorithm would instead take the larger square leaving the rest to be broken up into a number of smaller squares.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Interpolation 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!