I'm 15 years old and I've never been particularly interested in math or programming in my entire life. I wanted to do something for my school's arts festival since I have always participated but this time I wanted to do something different. I looked up how to do embroidery and found this video by pure chance. This is simply fascinating, you have completely changed how I saw mathematics.
The problem is school and school teachers. School is there to make people into unquestioning factory line workers. Don't expect to learn anything of value there.
I'm super interested in the FFT video! I'm also interested in how you went about making the machine to do this IRL, as well as the considerations for string tension and the like
That's exactly what I was wondering. Thanks for this comment! Congratulations to the author for this amazing video and all of his brilliant ideas, +1 sub, hoping to see the next video about fft algorithm :)
@@thewhitefalcon8539 yeah, and then you just code it in such a way that you never have to go over halfway around the circle in one direction on a single sweep so then you don't have to worry about keeping tension on the string while the length is contracting. I didn't realize this when I wrote my original comment, though
You're basically trying to reinvent how CAT scans work. Based on the outro it seems like you've already started digging into the literature, but the first step is something called a Radon transform.
@@virtually_passedYep, the first thing I thought of is that this is a great visualization of how (cone beam) CT works! It would be cool to see with a semi-translucent thread and back light. You could expand to CMYK coloured threads as well :) others have pointed out using the SVD. I'd point you to a classic computer vision paper called EigenFaces, which might be another technique for finding the weights on your basis vectors
@@Bob94390 Yeah, that would be more accurate. Of course, as everyone is saying, the way one does a (inverse) radon transform in practice is through the FT. And even then one rarely does an exact radon transform because it typically creates artifacts. So (my understanding, I am by no means an expert) is that at the end of the day the radon transform is just a model and in reality one is just manipulating FTs.
are we talking about the polar formatting algorithm here? Also, would applying the projection slice theorem help? I suppose projection slice theorem can be problematic since the string here is of uniform density.
Drawing an eye is spectacular art. Creating an algorithm and a machine that can use it to make art is PURE GENIUS, outstanding how far our brain can go!
1.9k views??? Wtf? This is an incredible quality video and you’ve put a ton of hard work into this I can see. It’s reminiscent of stuff made here and 3b1b put together. Thanks for sharing, and I hope it reaches tons of people as it deserves to!
@@lost.in.maze.official Uh, 3blue1brown is a example of the contrary. Grant gets millions of views on nearly every video they make, even on very obscure topics. Granted, (heh) they're an outlier, but still. Also, it might just be that string art is too obscure of a topic and the mathematics of such a thing are not immediately attention-grabbing. The thumbnail might also be to blame. It's very muted and gray, so it doesn't stand out among other thumbnails.
@@nikkiofthevalley He's not wrong. People'd rather watch others do stupid stuff or entertainment. It's obvious when you look at the most popular people on the platform.
This is utterly fascinating. It is truly one of the best representations of how to convert an algorithm into a practical situation. And combine that with art and you have magic and humanity.
My very first thought was this was going to be a Fourrier transform thing, then you told us about the matrix stuff. But alas, I got redeemed in the end!!! Great video.
In my youth during the 70's I was surrounded by various wire-art framed pictures and even did a few (geometric) versions for myself... but this absolutely blows my non-mathematical mind... thankyou for showing us what's really possible with this form of art🥰 (PS... I now know that I _need_ that stormtrooper artwork!!!)
Extremely well made video. Easy to understand and follow even without massive amounts of math knowledge. FFT video also sounds interesting, not sure how much I would understand but I want to watch it still
I saw art like this on Pinterest months ago, and I wanted to recreate it. But I couldn't find anything on the process used to make it. So glad I found this video.
I coded one of these. I'm deeply intrigued by the way of looking at it you have since it's quite a bit more involved than the way I had of doing it. It also seems much much faster since it took my method forever. Very well done.
@@virtually_passed Instead of looking at all of the pixels that the line intersected or looking at the local neighborhood I just, hmmm actually it's been a while let me look at my code, ok I just looked at the one with the closest center for each in a rough line. So what I did was for slopes less than 1 I used an equation for a line solved for y and rounded, then for slopes greater than 1 I wrote the equation the other way around solved for x and rounded. Then I took the total darkness of all of the pixels along the potential lines and found the one that was darkest, then I subtracted some from the pixels along that line to produce a new image. It may have been a bass ackward way of doing it though, I'm certainly not saying I did it "right" or "well" or "competently" but it did end up working with a little tuning. Also the machine you showed looks super cool.
Oh man, that is fascinating! I know it's for a contest, but I would love if you made the entire project open source with CAD and code so others (myself included) can make this project and learn by doing 😀
With all due respect, that's honestly a pretty unfair ask. While I know it's not how you intended it (I agree that it would be FUN to recreate this at home), but from an engineer's perspective it feels like you're asking for someone to give away for FREE the product that they worked so hard to conceptualize, design, prototype, code, troubleshoot, refine, and present. If it is someone's intention to do all of this work for it to be freely available, that is a decision that they have made on their own, and have somehow justified, and that's fine; but to REQUEST that they give it away comes off as lazy and entitled, and implies that their expertise and effort has no value. There is more than enough information presented here for someone like yourself who is interested in making such a device to find tutorials and explanations that are already available for individual aspects of the project. By taking this route, you will truly learn by doing, but in the process learn far more and be more capable of creating your own UNIQUE product in the future!
@@jhboulder hmmmm... I also wonder how much of this project has been built on others' open source work? Seems to me that the monetization of that knowledge would be fairly disrespectful to those who believed that knowledge should be openly shared. But that's just my opinion and you by no means have to feel the same. I simply feel like if someone has learned for free, they have a duty to provide their own knowledge to the world the same way. I'm almost done my first project and am excited to share the model freely. I hope you stumble upon it and enjoy!
@@nadimfetaih3841 there's a lot to unpack in that statement. "Open Source" seems to be a more complicated concept than I gave it credit for in the past. Speaking to the comment of 'monetization of knowledge that was gained for free', there are TONS of companies out there that are making money off of products or services that use pieces of Open Source projects, but because their end product is clearly distinguishable from other's finished products, it is generally considered acceptable for them to make money from these products and services. Major software companies are notorious for this, especially Google, Microsoft, Apple, and other similarly large software companies (not to imply that I think that these are the pinnacle of ethical business practices). Quite often, the bulk of the code that is used is just a copy-and-paste of snippets of code from somewhere else that they know already works, so they simply adapt it to their needs. As for the 'they have a duty to provide their own knowledge to the world' again speaks to our current cultural state of entitlement. We have come to expect that if someone else got something free, we should get it for free too. While I can understand where this feeling comes from, I still have trouble completely getting behind the thought that receiving something for free implies that you now have an OBLIGATION to pass it on for free. However, I CAN completely agree with that statement if it's changed ever so slightly to: "if someone has learned for free, they SHOULD CONSIDER PROVIDING their own knowledge to the world the same way." Everyone's situation is different, and there can be very valid reasons to not simply distribute it freely, anything from 'easy access to this could be harmful to society' to 'rent is due, so I need to make money off of my efforts to provide for my family' and a million different reasons. Thanks for respectfully sharing your opinion, and I hope that your maker journey is a successful one!
@@jhboulder Some people actually like to give away their work. Asking costs nothing. It's a binary answer. Being asked doesn't mean you have to say yes. Buying something is lazy and entitled. Making something from someone's designs takes time and effort and is very educational. Sharing enriches everyone. The opposite of sharing is just sad.
@@jhboulder You suggesting that them asking an innocent question is unfair is pretty unfair. I have no respect for the way you answered or your expressed opinions, their question is not freeloading and does not imply that the OP's work has no value. In fact asking for a way to interact further with an authors work does the opposite, it expresses that the work has value.
Instasubbed! I love this. Have had a sort of mystical fascination by circular dynamics like this ever since I discovered timetable multiplication. Thank you and I would love to see more videos on the subject!
great video. nice visuals. i love how you explained this interesting concept so simple with just enough depth to understand it (and remember) and not too much depth, so it doesn’t get boring
Wow, what an exciting application of math! When I saw the thumbnail, it reminded me of the math behind CT-imaging, and indeed the mathematical problem that you solve seems to be related... Keep on doing the good stuff!
I originally thought this could be solved for continuous images (eg: bezier curves) by making some scoring function based on the distance of the string to the curve and using simulated annealing or something similar to optimize it. But your least-squares discrete optimization didn't disappoint
great video! I think a possible approach to improve the greedy algo is to randomly(or greedily, or some other principle) destroy some lines and try to repair the images by add some new lines to minimize the cost.
What an absolutely beatiful video, just loved every bit of it! Looking forward to the fourier transform approach video too! Thanks for this quality content!
I liked this a lot because I learned all the math from the video last year in university and this video shows me how it is actually used. Very cool stuff
The last part seems to resemble how Stable Diffusion works, sort of. You draw a thread and see: if the resulting image gets closer to the target, keep it, otherwise remove it. Add one more thread and repeat...
I searched a bit about the string art problem. All I found was the wiki article and some stuff about Béziers curve and Computer graphics lessons about Bresenham algorithm and anti-aliaing. As an electrical engineer, I am familiar with a lot of these. But I like your mathematical approach more. You practically also did the Bresenhamm, but it's in a different way like the Least-Square-Regression Minimization problem. Very cool, I think, I am going to try to replicate this in MATLAB and see the results for myself :)
Likely recommended by youtube after I watched some video about CT scan reconstruction using FFT and weighting (which was quite good, but I don't recall much and I fall asleep during 2nd video explaining CT with ray cone rather than parallel rays}. As some people mentioned, very similar are hough/radon transforms. I guess they differ only in opposite aproach to description.
I'd have also included a part where it described the possible solutions to the boolean linear problem and the struggles of finding an optimal solution quickly, and the possible ways to do it anyway, that would then prove why going with a greedy solution is so much better
I thoroughly enjoyed this. I myself took out a pen and paper and attempted this approach on paper, which how well-made mathematical videos should feel. Wish you further success.
One of the few some3 videos that actually motivates the math in an original way, instead of making a slow and shitty video on math jargon that has 0 relevance and is basically trivial but somehow takes up 20 minutes of screen time. Good job lol
this make me think of interferometry, by combining a bunch of lines you make an image, also fourrier transform are used basically everywhere something is decompsed into a sum of values so it's not surprising that you can use FFT to make the algorithm much faster
We produce string art by placing nails all over the canvas and the algorithm is very similar! It doesn't only look at brightness though. For example it limits the number of threads per nail and it avoids completely white parts of the image.
I wonder if you could decompose a colour image into RGB, solve each then do three runs with red/green/blue string. I know they'd cover each other up to a certain degree, but I'd be fascinated to know if you could make colour string art using this technique! Perhaps allocate each nail a colour, so you've 1/3 the "resolution" but no masking of one colours' string by another. Anyway, fun to think about!
You could even add a white string that could 'cancel out' a line of color at a certain interval, like, at the very end, or in between certain colors. I wonder if this would show up graphically.
Hi, really nice video! Small idea i have -for the lines you could use also some anti-aliasing algorithm like MXAA. That in theory can eliminate the need in a custom step function and possible make stuff a bit smoother.
But you have to discretize at some point anyway since the image is a pixel array. I suppose you could also do it without discretization, by integrating the line footprint against a vector image, but I don't think it's worth the trouble.
@@plokki456 Yes, he does that at 8:05 in the video. Thing is, he samples the analytic 2D ridge instead of a discretized version of it, which would be necessary for e.g. MXAA.
My guess was initially that you would use FFT for such a problem. FFTs are used similarly in other areas such as antenna/loudspeaker beam forming (pattern synthesis).
@@virtually_passed indeed! There might be some insight to gain in “simple pattern synthesis for complicated arrays” by RF get down here on UA-cam - but I haven’t investigated too much into the usability of the method in your case
What you are trying to do in the beginning is very similar to Singular Value Decomposition. SVD is very similar to the Fourier transform. I'll recommend this video in this SVD playlist ua-cam.com/video/nbBvuuNVfco/v-deo.html. Also, solving the system of equations without using libraries would be actually nice to see since very few people know how to implement the algorithms involved (matrix multiplication for large matrices/determinant/ extracting eigenvalues and eigen vectors/QR factorization/SVD). The SVD gives you the linear combination of vectors or basis functions that allows you to approximate the target vector/function.
Matching pursuit is also a relevant algorithm. It's a greedy algorithm starting with the best matching vector instead of a random one (within a subset as here).
Really well explained. A possible improvement is to remove from the original image the values already taken into account by each line, to avoid some areas being too dark (if you keep the original image untouched the algorithm will try to cover the same black spot again and again with other lines, even if previous lines already managed to cover it).
I made these in Primary school in PNG on art classes, we all did. Still have some of them hanging on my parents house. Magical thing is that you can spray paint the back board after YOU'VE DONE THE COLOURED STRINGS/THREADSM THE STATIC ON THE STRING AND THE PAINT REPEL EACH OTHER SO ONE NEVER STICKS TO THE OTHER :-)
Thank you for this neat and pedagogical video 😊 ! You made me want to try to implement a thread art construction algorithm. I came across few academic articles but i would apreciate that you share your sources. Looking forward for the FFT solution !
This is very nice! I'm currently a 3rd year undergrad pursuing my BA(? (I don't know if in my country what i'm studying is equivalent to a BA) in mathematics. When I saw the title I did not imagine the math behind this would be, simply, linear algebra. Awesome video! Now I know something interesting to tell others about!
New video on string art is out! ua-cam.com/video/dBlSmg5T13M/v-deo.htmlsi=KTr8aD_GwLb8t2u5
I'm 15 years old and I've never been particularly interested in math or programming in my entire life. I wanted to do something for my school's arts festival since I have always participated but this time I wanted to do something different. I looked up how to do embroidery and found this video by pure chance. This is simply fascinating, you have completely changed how I saw mathematics.
This comment was a delight to read. I'm glad its made you see the beauty in mathematics :)
The problem is school and school teachers. School is there to make people into unquestioning factory line workers. Don't expect to learn anything of value there.
Hey, how is it going? Any success to share in your art?
I’d also like to know if there’s an update to this (no pressure if there isn’t)
@@reyariassno
Congratulations on winning #SoME3. You had a great explanation, I can't wait to see more!
I'm super interested in the FFT video! I'm also interested in how you went about making the machine to do this IRL, as well as the considerations for string tension and the like
That's exactly what I was wondering. Thanks for this comment!
Congratulations to the author for this amazing video and all of his brilliant ideas, +1 sub, hoping to see the next video about fft algorithm :)
The machine looks pretty simple actually. One servo motor to rotate the turntable and another one to hold the string inside or outside the nails
@@thewhitefalcon8539 yeah, and then you just code it in such a way that you never have to go over halfway around the circle in one direction on a single sweep so then you don't have to worry about keeping tension on the string while the length is contracting. I didn't realize this when I wrote my original comment, though
@@slightlyenlightenedlayman Even if you did, you'd have the string spool on some kind of springy rotating mechanism like what winds up a clock
I think FFT works here because the matrix is circulant - it's like with polynomials
You're basically trying to reinvent how CAT scans work. Based on the outro it seems like you've already started digging into the literature, but the first step is something called a Radon transform.
Thanks for your comment. I must confess I've never heard of a radon transform before. I'll look into it.
Or maybe an inverse Radon transform, since the image is known and it is the "projections" (string) that is sought?
@@virtually_passedYep, the first thing I thought of is that this is a great visualization of how (cone beam) CT works! It would be cool to see with a semi-translucent thread and back light. You could expand to CMYK coloured threads as well :) others have pointed out using the SVD. I'd point you to a classic computer vision paper called EigenFaces, which might be another technique for finding the weights on your basis vectors
@@Bob94390 Yeah, that would be more accurate. Of course, as everyone is saying, the way one does a (inverse) radon transform in practice is through the FT. And even then one rarely does an exact radon transform because it typically creates artifacts. So (my understanding, I am by no means an expert) is that at the end of the day the radon transform is just a model and in reality one is just manipulating FTs.
are we talking about the polar formatting algorithm here? Also, would applying the projection slice theorem help?
I suppose projection slice theorem can be problematic since the string here is of uniform density.
Awesome video! I like how you showed what happened with an early attempt for the black-white fall off curve.
Thanks!
The beauty of linear algebra, optimization and creativity in one single video.
I so want to program this in python/numpy now.
Grate work.
Drawing an eye is spectacular art.
Creating an algorithm and a machine that can use it to make art is PURE GENIUS, outstanding how far our brain can go!
1.9k views??? Wtf? This is an incredible quality video and you’ve put a ton of hard work into this I can see. It’s reminiscent of stuff made here and 3b1b put together. Thanks for sharing, and I hope it reaches tons of people as it deserves to!
Always starts from small amount of viewer
We're at 19k!!!
In fact, people tend to choose watching someone shaking their butt rather than watching math.
@@lost.in.maze.official Uh, 3blue1brown is a example of the contrary. Grant gets millions of views on nearly every video they make, even on very obscure topics. Granted, (heh) they're an outlier, but still.
Also, it might just be that string art is too obscure of a topic and the mathematics of such a thing are not immediately attention-grabbing. The thumbnail might also be to blame. It's very muted and gray, so it doesn't stand out among other thumbnails.
@@nikkiofthevalley He's not wrong. People'd rather watch others do stupid stuff or entertainment. It's obvious when you look at the most popular people on the platform.
Really amazing how you explained all the maths, the problems, the solutions and showed the end result 👏😊.
Glad you liked it!!
It's nice seeing I'm slowly starting to understand these math videos.
This is utterly fascinating. It is truly one of the best representations of how to convert an algorithm into a practical situation. And combine that with art and you have magic and humanity.
My very first thought was this was going to be a Fourrier transform thing, then you told us about the matrix stuff. But alas, I got redeemed in the end!!! Great video.
This is really nice. Thanks for making it and goo luck in the competition!
Please make a video with more details on the machine. Awesome video, eagerly waiting for another on the other algorithm you mentioned.
The results are so striking, and I love how you talked through your thought process
That’s brilliant. It is always easier to internalise math stuff when its being presented by some real example. Humanity needs more of this❤
In my youth during the 70's I was surrounded by various wire-art framed pictures and even did a few (geometric) versions for myself... but this absolutely blows my non-mathematical mind... thankyou for showing us what's really possible with this form of art🥰 (PS... I now know that I _need_ that stormtrooper artwork!!!)
Thanks! Glad you like it! 😊
Extremely well made video. Easy to understand and follow even without massive amounts of math knowledge. FFT video also sounds interesting, not sure how much I would understand but I want to watch it still
I saw art like this on Pinterest months ago, and I wanted to recreate it. But I couldn't find anything on the process used to make it. So glad I found this video.
That's so interesting. Your demo got me thinking about some ML algorithms, like the MSE loss function. Thank you!
3:57 line 3 was a little excited to get streched out into a vector XD! Greate video. I love seeing math and programming come together!
I coded one of these. I'm deeply intrigued by the way of looking at it you have since it's quite a bit more involved than the way I had of doing it. It also seems much much faster since it took my method forever. Very well done.
Oh wow, may I ask what method you used?
@@virtually_passed Instead of looking at all of the pixels that the line intersected or looking at the local neighborhood I just, hmmm actually it's been a while let me look at my code, ok I just looked at the one with the closest center for each in a rough line. So what I did was for slopes less than 1 I used an equation for a line solved for y and rounded, then for slopes greater than 1 I wrote the equation the other way around solved for x and rounded. Then I took the total darkness of all of the pixels along the potential lines and found the one that was darkest, then I subtracted some from the pixels along that line to produce a new image. It may have been a bass ackward way of doing it though, I'm certainly not saying I did it "right" or "well" or "competently" but it did end up working with a little tuning. Also the machine you showed looks super cool.
Oh man, that is fascinating! I know it's for a contest, but I would love if you made the entire project open source with CAD and code so others (myself included) can make this project and learn by doing 😀
With all due respect, that's honestly a pretty unfair ask. While I know it's not how you intended it (I agree that it would be FUN to recreate this at home), but from an engineer's perspective it feels like you're asking for someone to give away for FREE the product that they worked so hard to conceptualize, design, prototype, code, troubleshoot, refine, and present. If it is someone's intention to do all of this work for it to be freely available, that is a decision that they have made on their own, and have somehow justified, and that's fine; but to REQUEST that they give it away comes off as lazy and entitled, and implies that their expertise and effort has no value. There is more than enough information presented here for someone like yourself who is interested in making such a device to find tutorials and explanations that are already available for individual aspects of the project. By taking this route, you will truly learn by doing, but in the process learn far more and be more capable of creating your own UNIQUE product in the future!
@@jhboulder hmmmm... I also wonder how much of this project has been built on others' open source work? Seems to me that the monetization of that knowledge would be fairly disrespectful to those who believed that knowledge should be openly shared. But that's just my opinion and you by no means have to feel the same. I simply feel like if someone has learned for free, they have a duty to provide their own knowledge to the world the same way. I'm almost done my first project and am excited to share the model freely. I hope you stumble upon it and enjoy!
@@nadimfetaih3841 there's a lot to unpack in that statement. "Open Source" seems to be a more complicated concept than I gave it credit for in the past. Speaking to the comment of 'monetization of knowledge that was gained for free', there are TONS of companies out there that are making money off of products or services that use pieces of Open Source projects, but because their end product is clearly distinguishable from other's finished products, it is generally considered acceptable for them to make money from these products and services. Major software companies are notorious for this, especially Google, Microsoft, Apple, and other similarly large software companies (not to imply that I think that these are the pinnacle of ethical business practices). Quite often, the bulk of the code that is used is just a copy-and-paste of snippets of code from somewhere else that they know already works, so they simply adapt it to their needs. As for the 'they have a duty to provide their own knowledge to the world' again speaks to our current cultural state of entitlement. We have come to expect that if someone else got something free, we should get it for free too. While I can understand where this feeling comes from, I still have trouble completely getting behind the thought that receiving something for free implies that you now have an OBLIGATION to pass it on for free. However, I CAN completely agree with that statement if it's changed ever so slightly to: "if someone has learned for free, they SHOULD CONSIDER PROVIDING their own knowledge to the world the same way." Everyone's situation is different, and there can be very valid reasons to not simply distribute it freely, anything from 'easy access to this could be harmful to society' to 'rent is due, so I need to make money off of my efforts to provide for my family' and a million different reasons. Thanks for respectfully sharing your opinion, and I hope that your maker journey is a successful one!
@@jhboulder Some people actually like to give away their work. Asking costs nothing. It's a binary answer. Being asked doesn't mean you have to say yes.
Buying something is lazy and entitled. Making something from someone's designs takes time and effort and is very educational.
Sharing enriches everyone. The opposite of sharing is just sad.
@@jhboulder You suggesting that them asking an innocent question is unfair is pretty unfair. I have no respect for the way you answered or your expressed opinions, their question is not freeloading and does not imply that the OP's work has no value. In fact asking for a way to interact further with an authors work does the opposite, it expresses that the work has value.
It is my duty to thank you for the good content you have provided.
Thanks :) 🙏
This is some kind of string theorie I would love to see 😄👍
My heart sank a bit when there was no github repo in the description. This was an AMAZING video, thanks for sharing this knowledge!!!!
Thanks. I enjoyed watching something useful for a change.
Linear Algebra was hands down my FAV math course.... Great Video gonna watch more
I've been fantasizing about this machine for so long. You are my hero.😂
Instasubbed! I love this. Have had a sort of mystical fascination by circular dynamics like this ever since I discovered timetable multiplication. Thank you and I would love to see more videos on the subject!
Oh and did you build the machine yourself? Would love to see a video about the machine itself!
Very imperative! Math is definitely beautiful!
Came from 3B1B's video. Will be staying for good math videos 😁.
Welcome!
great video. nice visuals. i love how you explained this interesting concept so simple with just enough depth to understand it (and remember) and not too much depth, so it doesn’t get boring
Glad you liked it!
Wow, what an exciting application of math! When I saw the thumbnail, it reminded me of the math behind CT-imaging, and indeed the mathematical problem that you solve seems to be related... Keep on doing the good stuff!
Glad you enjoyed it. I made a follow up video where I ended up using the math from CT scanners!
I originally thought this could be solved for continuous images (eg: bezier curves) by making some scoring function based on the distance of the string to the curve and using simulated annealing or something similar to optimize it. But your least-squares discrete optimization didn't disappoint
This channel is about to boom 💥
And it deserves to!
Awesome content
Thank you 🙌
great video! I think a possible approach to improve the greedy algo is to randomly(or greedily, or some other principle) destroy some lines and try to repair the images by add some new lines to minimize the cost.
I agree! The only downside is that it'll be harder to recreate it from a single thread (unless you use some clever tricks)
So beautiful love it thank you ♥️
Thank you! Cheers!
What an absolutely beatiful video, just loved every bit of it! Looking forward to the fourier transform approach video too! Thanks for this quality content!
Glad you enjoyed it!
So beautiful, interesting and educational!
Glad you think so!
I'm watching your series on differential equations and it is fascinating.
Thanks! I plan to make a lot more of those
You are why internet exists. Good work sir!
This video made my head spin. the visuals are super helpful and the fact this works is truly impressive to me.
one of the best recommendations by 3blue1brown
Thanks :)
Fascinating video. Thanks for sharing
honestly superb video, really interesting how you problem solved this
Glad you liked it!
Awesome explanation! Loved it.
:)
Very cool video! My first thoughts were edge detection and tangents... but this is pretty elegant with being able to use a single thread!
Glad you enjoyed it!
This brings me back to my ML courses. Looks so similar.
I liked this a lot because I learned all the math from the video last year in university and this video shows me how it is actually used. Very cool stuff
The last part seems to resemble how Stable Diffusion works, sort of. You draw a thread and see: if the resulting image gets closer to the target, keep it, otherwise remove it. Add one more thread and repeat...
I searched a bit about the string art problem. All I found was the wiki article and some stuff about Béziers curve and Computer graphics lessons about Bresenham algorithm and anti-aliaing. As an electrical engineer, I am familiar with a lot of these. But I like your mathematical approach more. You practically also did the Bresenhamm, but it's in a different way like the Least-Square-Regression Minimization problem. Very cool, I think, I am going to try to replicate this in MATLAB and see the results for myself :)
Likely recommended by youtube after I watched some video about CT scan reconstruction using FFT and weighting (which was quite good, but I don't recall much and I fall asleep during 2nd video explaining CT with ray cone rather than parallel rays}. As some people mentioned, very similar are hough/radon transforms. I guess they differ only in opposite aproach to description.
Immediately thought it reminded me of FFT, happy to be validated on that. Looking forward to the next video.
Very fascinating and engaging video, the processes made me think of how JPEG storage works at some points
I would absolutely love to see the source code. Amazing work!
Same here
It is in fact interesting, thank you.
I'd have also included a part where it described the possible solutions to the boolean linear problem and the struggles of finding an optimal solution quickly, and the possible ways to do it anyway, that would then prove why going with a greedy solution is so much better
Great video. I would love seeing the other algorithm you talked about in the outro and making of the Machine
I thoroughly enjoyed this. I myself took out a pen and paper and attempted this approach on paper, which how well-made mathematical videos should feel. Wish you further success.
Thanks!
One of the few some3 videos that actually motivates the math in an original way, instead of making a slow and shitty video on math jargon that has 0 relevance and is basically trivial but somehow takes up 20 minutes of screen time. Good job lol
10:02 Yes, PLEASE explain the improved concept using FFT in one of your next videos. I have just subscribed - mainly for that. 🙂
this make me think of interferometry, by combining a bunch of lines you make an image, also fourrier transform are used basically everywhere something is decompsed into a sum of values so it's not surprising that you can use FFT to make the algorithm much faster
Very very interesting.
Things like this are sweet.
Congratulations! Some3
Thank you!
Looking forward to a followup video with the FT method!
I basically learned all this in university, but only after watching this video i really understood what I'm actually calculating there
So cool! Hoping to see a lot more content from you! Very very cool!
More to come!
I'm very interested in the Fourier Transform Approach
I'm making a video about it ;)
We produce string art by placing nails all over the canvas and the algorithm is very similar! It doesn't only look at brightness though. For example it limits the number of threads per nail and it avoids completely white parts of the image.
such an awesome video, wish you all the best
I wonder if you could decompose a colour image into RGB, solve each then do three runs with red/green/blue string. I know they'd cover each other up to a certain degree, but I'd be fascinated to know if you could make colour string art using this technique! Perhaps allocate each nail a colour, so you've 1/3 the "resolution" but no masking of one colours' string by another. Anyway, fun to think about!
Yes you can! Although I'd recommend CMYK instead of RGB
You could even add a white string that could 'cancel out' a line of color at a certain interval, like, at the very end, or in between certain colors. I wonder if this would show up graphically.
Maybe also use the Bayer filter to mosaic the colours and reduce the number of strings used.
Hi, really nice video! Small idea i have -for the lines you could use also some anti-aliasing algorithm like MXAA. That in theory can eliminate the need in a custom step function and possible make stuff a bit smoother.
Great idea. I think that'll also work really well
Starting from the analytic line, as he does, is even better. It resembles discrete anti aliasing like MXAA on infinite resolution.
But you have to discretize at some point anyway since the image is a pixel array.
I suppose you could also do it without discretization, by integrating the line footprint against a vector image, but I don't think it's worth the trouble.
@@plokki456 Yes, he does that at 8:05 in the video. Thing is, he samples the analytic 2D ridge instead of a discretized version of it, which would be necessary for e.g. MXAA.
Bilinear filtering should be enough.
Great video, really interesting.
Glad you enjoyed it! Next one is almost done
Super looking forward to follow-ups on this! Great video, neat project, and just yeah, very cool. :)
Found this Masterpiece from SoME3😄
:)
Really nice to see! Looking forward to the next movie :)
Beautiful! Well done good sir!
Glad you like it!
I like the way you say vector
Lol, how do you say it?
My guess was initially that you would use FFT for such a problem. FFTs are used similarly in other areas such as antenna/loudspeaker beam forming (pattern synthesis).
I agree, it seems like a natural progression. However formulating the problem as an fft problem is very difficult in my view :)
@@virtually_passed indeed! There might be some insight to gain in “simple pattern synthesis for complicated arrays” by RF get down here on UA-cam - but I haven’t investigated too much into the usability of the method in your case
This video is so good please make more into this topic i love it!
You have easily earned a sub! This is criminally under watched
You've gained a new sub. This is amazing!!
Yay, thank you!
Mathematics is Art, glad to see Art being Mathematical
Congratulations for being featured by 3b1b 🎉
Thanks!
❤❤❤❤❤❤Did see a video about a string machine. And i was wondering what crazy math wee need to make something like this xD
Super cool thanks :D
Glad it was helpful!
omg! I was imagining turning my CNC router into a string art machine!
Nicely done!
I would absolutely love to see more videos on this subject, especially on the machine shown at the beginning
One of the best videos I ever watch...
Amazing! thank you !
Thanks, very cool. I appreciated the explanation, but I want to see more of that machine and its results! Please post. Thanks!
What you are trying to do in the beginning is very similar to Singular Value Decomposition. SVD is very similar to the Fourier transform. I'll recommend this video in this SVD playlist ua-cam.com/video/nbBvuuNVfco/v-deo.html. Also, solving the system of equations without using libraries would be actually nice to see since very few people know how to implement the algorithms involved (matrix multiplication for large matrices/determinant/ extracting eigenvalues and eigen vectors/QR factorization/SVD). The SVD gives you the linear combination of vectors or basis functions that allows you to approximate the target vector/function.
Matching pursuit is also a relevant algorithm. It's a greedy algorithm starting with the best matching vector instead of a random one (within a subset as here).
Do you mean he should do SVD for the matrix A? how will that help? what would the singular values be interpreted as?
Really well explained. A possible improvement is to remove from the original image the values already taken into account by each line, to avoid some areas being too dark (if you keep the original image untouched the algorithm will try to cover the same black spot again and again with other lines, even if previous lines already managed to cover it).
I made these in Primary school in PNG on art classes, we all did. Still have some of them hanging on my parents house. Magical thing is that you can spray paint the back board after YOU'VE DONE THE COLOURED STRINGS/THREADSM THE STATIC ON THE STRING AND THE PAINT REPEL EACH OTHER SO ONE NEVER STICKS TO THE OTHER :-)
This video exploded! Glad to see it's getting the attention it deserves.
Thanks
nice string theory bro
Thanks bro
Thank you for this neat and pedagogical video 😊 ! You made me want to try to implement a thread art construction algorithm. I came across few academic articles but i would apreciate that you share your sources. Looking forward for the FFT solution !
This is very nice! I'm currently a 3rd year undergrad pursuing my BA(? (I don't know if in my country what i'm studying is equivalent to a BA) in mathematics. When I saw the title I did not imagine the math behind this would be, simply, linear algebra. Awesome video! Now I know something interesting to tell others about!
really amazing explanation and animation! subbed! :)