Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^2: Detect boundaries within .png's - and cropping

by etj (Deacon)
on Apr 21, 2022 at 07:58 UTC ( [id://11143159]=note: print w/replies, xml ) Need Help??


in reply to Re: Detect boundaries within .png's - and cropping
in thread Detect boundaries within .png's - and cropping

Intriguingly, there's no cropping type functionality in core PDL. A bit of a ponder suggests a good approach would be to (for rows), assuming an image of (rgba,x,y):
$non_blank_rows = ($img->slice('(3)') != 0)->orover; ($low, $high) = $non_blank_rows->which->minmaximum;
Then do the same for $img->xchg(1,2) for the columns, and hey presto, there's your bounding box!

Replies are listed 'Best First'.
Re^3: Detect boundaries within .png's - and cropping
by etj (Deacon) on Apr 25, 2022 at 01:57 UTC
    It turns out that making this broadcast properly over multiple images was impressively hard.

    which had a hardcoded limitation that it would only work on a 1-dim ndarray (fixed by imitating PDL::VectorValued's strategy of having a "how many set for each vector" output ndarray).

    Then actually using that with minmaximum also posed a problem, since the number of values per image might vary (in other words, the outputs might be ragged) - fixed that by having which fill the unset index-values with -1, and then setting that as the badvalue for the output ndarray, so minmaximum would ignore them.

    After that, the rest was easy! The new PDL::Image2D::crop works on a mask, so the above snippet would call

    $x1x2y1y2 = ($img->slice('(3)') != 0)->crop;
      This has now been released with PDL 2.079! See separate announcement for more.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11143159]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (1)
As of 2024-04-25 04:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found