Deep fields: pixel sorting Hubble images of deep space

16 Likes

news-congrads-kkluyshnik-02-04-19.jpg – you have earned Featured Contributor Badge 2015-11-02_10-07-11.png
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!

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*)
3 Likes

Yes. You can see my NFTs here:

https://www.hicetnunc.xyz/objkt/3816

https://www.hicetnunc.xyz/objkt/3467

https://www.hicetnunc.xyz/objkt/535

https://www.hicetnunc.xyz/objkt/521

3 Likes

Very nice work!

3 Likes

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 :slight_smile:

2 Likes

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

3 Likes

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

Sounds great, thank you!

The function is now live :slight_smile:

https://resources.wolframcloud.com/FunctionRepository/resources/PixelSort/

3 Likes

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.

4 Likes

@Steven Christensen Amazing image, how did you get Orion Nebula area images? I mean what are the specs you used in your telescope and camera?

1 Like

Very nice :slight_smile: 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]
  ]

4 Likes

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!

1 Like

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"|>]

2 Likes

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

Pixel sorting according to different methods

1 Like

Thank you for that info!

Ahmed,

Back in October of 2016 at a star party in Staunton River State Park, a dark site in southern Virginia, I used a Stellarvue 102mm triplet refractor, a Canon 60D camera, and an Orion Atlas mount. I took two hours of 90sec and another hour or so of 45sec exposures and stacked them in Deep Sky Stacker and finished in Photoshop. I still use the Stellarvue 102, but am moving to a ZWO ASI 2600mm Pro monochrome camera with 36mm filters on an Atlas Pro mount with guiding etc. I stack in Pixinsight and then process in Photoshop. The technology, both hardware and software, has upgraded enormously in five years.

3 Likes

Amazing Steven. Thank you for the info.