Welcome to Incremental Social! Learn more about this project here!
Check out lemmyverse to find more communities to join from here!

WeLoveCastingSpellz ,

holly ahit open source drawing

Otherwise_Direction7 OP ,

Free and open-source baby, powered by CC BY-NC content license

JigglypuffSeenFromAbove ,
@JigglypuffSeenFromAbove@lemmy.world avatar

I used an app on my phone to draw over the image and made a cow twerking at the disco.

https://lemmy.world/pictrs/image/28b44c3d-3986-4ca2-bd81-0501eea010c7.png

Otherwise_Direction7 OP ,

Oddly specific but ok

Rebels_Droppin ,
@Rebels_Droppin@lemmy.world avatar
Otherwise_Direction7 OP ,

This could be a logo for a hacker group or a scene group

Rebels_Droppin ,
@Rebels_Droppin@lemmy.world avatar

Lol yeah I can see it working for either of those!

PM_ME_VINTAGE_30S ,
@PM_ME_VINTAGE_30S@lemmy.sdf.org avatar

No, you gave it a dump truck

HerbalGamer ,
@HerbalGamer@sh.itjust.works avatar

Bulls in Spaaaace!

HerbalGamer ,
@HerbalGamer@sh.itjust.works avatar

Hold on this is gonna take some time but I might just try this and post in a few weeks

HerbalGamer ,
@HerbalGamer@sh.itjust.works avatar
Otherwise_Direction7 OP ,

I will watch your progress with the great interest

HerbalGamer ,
@HerbalGamer@sh.itjust.works avatar

Okay hold on; I did it in a few hours, not weeks but it gets freaky fast:

  1. Played around with the lines; erasing a few bits and rounding off some corners. https://sh.itjust.works/pictrs/image/ff58e3e8-ae0c-4fe4-8b2b-c648867525ee.jpeg

  2. Did the outlines in marker https://sh.itjust.works/pictrs/image/e256e173-2a00-4040-af4a-0fbc7d71f1ff.jpeg

  3. First bit of shading https://sh.itjust.works/pictrs/image/c9190ed2-5062-4755-96ac-91cee3ffb313.jpeg

  4. Left it overnight. Came back today and started building up the shades and lines https://sh.itjust.works/pictrs/image/13b964a7-9ea9-4310-98ab-7fe971a34681.jpeg

  5. Bit more https://sh.itjust.works/pictrs/image/650e316a-1ec7-4e3c-8a63-5ba12e80e734.jpeg

  6. Bit more and now I think I'm done. https://sh.itjust.works/pictrs/image/39285564-310a-42ba-b7c5-f13c65c5c43f.jpeg

HerbalGamer ,
@HerbalGamer@sh.itjust.works avatar

Also my friend asked for a drawing of some mushrooms so I think I'm gonna use the same template for that :)

Can we do these more often? This is fun! :D

webghost0101 ,

What community would fit something like this?

HerbalGamer ,
@HerbalGamer@sh.itjust.works avatar

Good question; probably its own?

Otherwise_Direction7 OP ,

Looks like a monster for a JRPG, pretty cool and well drawn

Pudutr0n ,
@Pudutr0n@feddit.cl avatar

https://i.imgur.com/ldxU61w.png

over 9000 hours on paint

spoiler

.net

Otherwise_Direction7 OP ,

9000 hours well spent

Jackie_meaiii ,

I used the default photos app on my phone to draw a totally normal cow

https://lemmy.blahaj.zone/pictrs/image/08d62231-8a5e-41d7-85c7-e0ba7fb96f6b.png

Otherwise_Direction7 OP ,

Is that supposed to be a blood on the bottom right?

EvokerKing ,

I think it's a little more nsfw

PM_ME_VINTAGE_30S ,
@PM_ME_VINTAGE_30S@lemmy.sdf.org avatar

I mean there's blood inside the red thing.

adj16 ,

This is so f’n weird, I love it

PM_ME_VINTAGE_30S ,
@PM_ME_VINTAGE_30S@lemmy.sdf.org avatar

So I took your image and ruined my MATLAB account used the most normal part of your totally normal cow as a 3D [1] cockvolution convolution kernel. So in some sense, I dragged the red and purple part all across your image and added up the results. Here's the result:

Figure 2024-01-15 14_46_27

Here's the MATLAB code:

normal_image = imread("totally_normal_image.png");

feature=normal_image(272:350,205:269,:);

feature_expansion = padarray(feature,[0,ceil((79-65)/2),0],'replicate');

for m = 1:1:3

new_normal_image(:,:,m) = conv2(normal_image(:,:,m),feature_expansion(:,:,m));

new_normal_image(:,:,m) = new_normal_image(:,:,m)/max(max(new_normal_image(:,:,m))); 

end

imshow(new_normal_image)

[1] The original image was practically grayscale, so only a 2D convolution is required, i.e. over 2 spatial dimensions. Since you added color, it adds a extra dimension, one per color channel. Which makes it more annoying to work with in MATLAB. I mean, I could have just dumped everything into grayscale, but I need practice with processing color images anyways.

PM_ME_VINTAGE_30S , (edited )
@PM_ME_VINTAGE_30S@lemmy.sdf.org avatar

I created this on my phone in MATLAB. You can probably do this in Octave with similar or the same code.

Figure 2024-01-14 17_18_24~2

First, I downloaded the image from Lemmy, then uploaded it into my MATLAB app. I renamed the image to image.jpg, then ran the following code:

image=imread("image.jpg")
imagesc(log10(abs( fftshift(fft2(image)) )))

fft2 applies a 2D Fast Fourier transform to the image, which creates a complex (as in complex numbers) image. abs takes the magnitude of the complex image elementwise. log10 scales the result for display.

Then I downloaded the image from the MATLAB app, went into the Photos app and (badly) cropped out the white border.

Despite how dramatically different it looks, it actually contains the same [1] information as the original image. Said differently, you can actually go back to the original with the inverse functions, specifically by undoing the logarithm and applying the inverse FFT.

[1] Almost. (1). There will be border problems potentially caused by me sloppily cropping some pixels out of the image. (2). It looks like MATLAB resized the image when rendering the figure. However, if I actually saved the matrix (raw image) rather than the figure, then it would be the correct size. (3) (Thank you to @itslilith for pointing this out.) You need the phase information to reconstruct the original signal, which I (intentionally) threw out (to get a real image) when I took the absolute value but then completely forgot about it.

asbestos , (edited )
@asbestos@lemmy.world avatar

Can guarantee OP didn’t expect this when he was making the post, damn

itslilith ,
@itslilith@lemmy.blahaj.zone avatar

don't you lose information by taking the abs(), since to restore the full information you need both complex and imaginary parts of the fft? You could probably get away with encoding Re and Im in different color channels tho

drailin , (edited )
@drailin@kbin.social avatar

Another nice way one could preserve the complex data when visualizing it would be to make a 3d color mesh and display the imaginary components as the height in z and the real component as the color scale (or vice-versa).

Edit* now I am trying to think if there would be a clever way to show the abs, Re and Im values in one 3d plot, but drawing a blank. Maybe tie Im to the alpha value to make the transparency change as the imaginary component goes up and down? It would just require mapping the set of all numbers from -inf:inf to 0:1, which is doable in a 1-1 transformation iirc since they both have cardinality C. I think it would be

alpha = 1 - 1/(1-e^{Im(z)})

Which looks a lot like the equation for Bose-Einstein statistics in Stat. Mech. I was never very good at complex analysis or group theory though, so I don't really know what to make of that.

itslilith ,
@itslilith@lemmy.blahaj.zone avatar

Bose-Einstein isn't a great fit, since you'd need to integrate, and it only goes from 0:inf. For mapping the reals to 0:1 you could use arctan and shift it a bit.

Now I'm thinking, instead of color and alpha, you could use two out of hue, saturation and value for Re and Im (or all three, and plot Abs as well)

drailin ,
@drailin@kbin.social avatar

Ah, you're right, I haven't taken Stat. Mech. in almost 5 years so my brain just latched on to the general form. Analysis in frequency space is always fun

PM_ME_VINTAGE_30S ,
@PM_ME_VINTAGE_30S@lemmy.sdf.org avatar

Correct. I updated my comment.

Otherwise_Direction7 OP ,

Ok, this is really mad cool, I like it

drailin ,
@drailin@kbin.social avatar

Apply a nice gaussian kernel convolution to the fft and smooth that doodle out! Lets get blurry up in this doodle party!

PM_ME_VINTAGE_30S ,
@PM_ME_VINTAGE_30S@lemmy.sdf.org avatar

Apply a nice gaussian kernel convolution to the fft

I applied the following code in MATLAB:

new_image = abs(ifft2(conv2(fft2(image),fspecial('gaussian',69))));
imwrite(new_image,"new_image.png")

And got this:

Figure 2024-01-15 05_40_24

drailin ,
@drailin@kbin.social avatar

Oh fuck yeah

drailin ,
@drailin@kbin.social avatar

Just noticed that you chose the nicest kernel size. Even better.

HerbalGamer ,
@HerbalGamer@sh.itjust.works avatar

Saving this comment in case I ever need a new phone background.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • 196@lemmy.blahaj.zone
  • incremental_games
  • meta
  • All magazines