Group Abstract Group Abstract

Message Boards Message Boards

Deep fields: pixel sorting Hubble images of deep space

Posted 4 years ago

POSTED BY: Jack Madden
18 Replies

I think this post/function from @Erik Mahieu may interest you:

Pixel sorting according to different methods
https://community.wolfram.com/groups/-/m/t/547944

POSTED BY: Ahmed Elbanna

Thank you for that info!

Fun code, Jack. Had to try it on an old Markarian's Chain image I took. Works nicely. Looking forward to future developments.

enter image description here

This is amazing!! thank you so much for sharing :)

POSTED BY: Jack Madden

I've tried minting a few of these images on OpenSea.io. Is anyone else making Mathematica based art on the blockchain?

BlockchainAddressData["0x8f6d5001f1c5dfe227c7025d168364461971004a"] (*Wallet*)

BlockchainAddressData["0x495f947276749Ce646f68AC8c248420045cb7b5e"] (*Artwork Contract*)
POSTED BY: Jack Madden

Very nice work!

POSTED BY: Jack Madden

Thank you! Your work is beautiful too! Note that my NFTs are on Tezos blockchain (which we already support on WL).

Also, very nice work with the pixel sorting. I submitted a pixel sorting function to the Wolfram Function Repository but it's still not live yet. I can update you once it's live because your feedback would be great and maybe we can collaborate on a second version :)

Sounds great, thank you!

POSTED BY: Jack Madden

Once again, this time with Christian's PixelSort function on one of my Orion Nebula area images from 2016. Fiddling with Level gives some interesting different versions of the image. I liked this one the best. Can you extend the Direction option to sort diagonally at various angles? Maybe a Manipulate to adjust Direction and Level, though on my machine that might be a little slow.

enter image description here

POSTED BY: Ahmed Elbanna

Amazing Steven. Thank you for the info.

POSTED BY: Ahmed Elbanna

Very nice :) Adam Ferriss is an artist who uses this style of sorting with space images. I was working on an angle mode the other day. Code is still a rough draft though, breaks easily if you try to push the cone off the edge.

deepfields[source_, fraction_, width_, sort_, rotate_, size_, mode_, 
  m_] := Module[{newpic = {}, left, middle, right, picdat = source},

  Which[
   mode == "Straight",
   If[rotate == 0, , picdat = Transpose[picdat]];
   Do[
    left = 
     SortBy[picdat[[i, 1 ;; Floor[Length[picdat[[i]]]*fraction]]], 
      sort];
    middle = 
     picdat[[i, 
       Floor[Length[picdat[[i]]]*fraction + 1] ;; 
        Floor[Length[picdat[[i]]]*(fraction + width)]]];
    right = 
     Reverse[SortBy[
       picdat[[i, 
         Floor[Length[picdat[[i]]]*(fraction + width) + 1] ;; All]], 
       sort]];
    AppendTo[newpic, Join[left, middle, right]];
    , {i, 1, Length[picdat]}];
   If[rotate == 0, , newpic = Transpose[newpic]];

   , mode == "Angle",
   If[rotate == 0, , picdat = Transpose[picdat]];
   Do[
    left = 
     SortBy[picdat[[i, 
        1 ;; Floor[
          Length[picdat[[i]]]*(fraction - i/(m*Length[picdat]))]]], 
      sort];
    middle = 
     picdat[[i, 
       Floor[Length[picdat[[i]]]*(fraction - i/(m*Length[picdat])) + 
          1] ;; 
        Floor[Length[
           picdat[[i]]]*((fraction + i/(m*Length[picdat])) + width)]]];
    right = 
     Reverse[SortBy[
       picdat[[i, 
         Floor[Length[
              picdat[[i]]]*((fraction + i/(m*Length[picdat])) + 
               width) + 1] ;; All]], sort]];
    AppendTo[newpic, Join[left, middle, right]];
    , {i, 1, Length[picdat]}];
   If[rotate == 0, , newpic = Transpose[newpic]];
   ];

  Image[newpic, ImageSize -> size]
  ]

enter image description here

POSTED BY: Jack Madden

Hi @Steven Christensen . Thanks for using the function! The results looks beautiful.

And yes, I plan to expand the scope of the function once I have some time. Diagonal direction is something on my bucket list, although I need to think of how to do it properly. I also want to add more modes and a way to accept a custom functions as a mode.

I wouldn't add a Manipulate to the function itself but add an example to the Neat Examples section, as I did with the animation.

Any other feedback is much appreciated. Thanks!

BTW, using my function, I got similar results to @Jack Madden 's with a Hubble image:

image = Import["http://cdn.eso.org/images/screen/eso1738b.jpg"]    
ResourceFunction["PixelSort"][image, <|"Level" -> 1, "LevelTest" -> "Max"|>]

enter image description here

enter image description here -- you have earned Featured Contributor Badge enter image description here Your exceptional post has been selected for our editorial column Staff Picks http://wolfr.am/StaffPicks and Your Profile is now distinguished by a Featured Contributor Badge and is displayed on the Featured Contributor Board. Thank you!

POSTED BY: EDITORIAL BOARD
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard