6 ms·
It's really impressive how their sophisticated image processing algorithms are only a few lines long. If I wrote an algorithm to detect rivers, it would be hund
by oofabz 14y ago
It's really impressive how their sophisticated image processing algorithms are only a few lines long. If I wrote an algorithm to detect rivers, it would be hundreds of lines long and less effective. These guys tackle it mathematically and it seems almost magical. I wish I could think that way.
- maurits 14y agoThere is no panacea in image processing. These methods work for this particular image, and give an idea about the possible solution, but the thresholding and morphological operations are not scale invariant, and very sensitive to light changes and noise. Any algorithm that can detect rivers in text from any image, acquired by some device, such as mobile phone or a scanner, in any light circumstances, will run hundreds of lines long.
- deleted 14y ago[deleted]
- phil 14y agoSure, but the problem here is "we'd like to detect rivers in TeX, but it doesn't know about glyph shape which we know is important." They're talking about clean images only.
- Chirono 14y agoI find this comment interesting given the recent (ok, continuous) talk about not using maths puzzles in programmer interviews. This is perhaps an interesting real-world case that demonstrates how a mathematical outlook leads to much cleaner code. Ok, solving this kind of thing is rare, but still...
- thomasz 14y agoThe secret sauce here is not the ability to solve "maths puzzles", but specialized domain knowledge.
- ColinWright 14y agoThat's exactly the wrong way round. You can acquire domain knowledge, you can have a domain expert assigned to you to work with you. What you can't acquire, on demand, is the ability to think in the ways that mathematics gives you. That requires extensive training and practice, and recognizing when obscure bits of theory are applied is something that doesn't come overnight.
- kamaal 14y agoIts made up of both actually. Somebody outside devops would consider pervasive use of sed, awk and other unix text processing utilities line noise. Yet such a thing would come naturally to that person working on it daily. If you can't really get such stuff easily at the very first time does it mean you are a bad programmer? Not quite. The way I look at it, I would consider somebody good if he can read the documentation/theory etc and then come up solution to problems(read: can write programs). That way you know the guy can actually get some work done. It requires practice and time to get used to and comfortable to a new domain. That's natural friction you have to wear out. Regardless of whether its math, music, literature of whatever. Paying too much importance to factual stuff isn't of much use. What's more important is, can the person work his way out of the problem. I checked out your bio, I understand you do math for a living and are obviously a little defensive when some one underplays the importance of your area of expertise. But the fact of the matter is though math is relevant, the areas in which its relevant are largely either rare or are already solved and presented to most programmers as libraries and frameworks. And if its not, simple analysis, a little reading and experimenting is sufficient to solve the problem at hand. Your problem is not with programmers but with a term called abstraction. And fighting that is futile. The benefits vastly over weight any intellectual argument you can present against it. EDIT: By the way after reading your bio, I have developed atmost respect for all the work you have done in your life.
- srean 14y agoWas a fine tangential comment, till you started an unsolicited diagnosis of Colin's hypothetical disease. Downvoted.
- Bjartr 14y agoFor what it's worth (I've only taken one college level course on computer vision, plus some side projects) my experience with matlab is that it's surprisingly easy to put together a short solution once you've figured out what's actually needed. The matlab CV API is very broad and pretty well documented, so it's less about knowing the math and more about reading the manual. In that regard producing a concise solution to a CV problem is very much like producing a concise solution to most other problems in any language.
- michael_h 14y agoThe MATLAB CV library is almost identical to OpenCV if you prefer C or C++.
- coliveira 14y agoIn some areas, programming is not the most important ability, but instead the understanding of the mathematics behind the phenomenon. This is the case in areas such as operations research, computer vision, and machine learning. You cannot assume that, to be a programmer, a person must know these subjects. On the other hand, creating a good algorithm in these mathematical subjects doesn't imply that you are a good programmer.
- upquark 14y agoActually math and stats applications are very common, developers could really benefit from knowing more math, recognizing known problems and applying known solutions. People just do things the dumb way more often than not, and then spend months if not years fixing the mess they've created.