Hacker News new | ask | show | jobs
by shurcooL 4074 days ago
> Create a fully functional web app

> Do not use anything but standard library

Is this a high school homework or a realistic real world challenge? No thanks.

I'd say it's not just a bit over top, but ridiculously over the top. Maybe it's just me.

1 comments

No, the Go standard library really does have everything you need to do all this. The only thing that makes me go "Really?" is the actual process of generating the photo mosaic, but that's just because despite appearances that's actually a substantial challenge no matter what library support you have (barring one custom designed for this use case). Technically, yes, the Go library has what you need to do that, but you'll be writing an awful lot of image processing code on your own to get even "good" results.

http://golang.org/pkg/image/

I also find it amusing that you are "banned" from "ghosting" (putting a faint copy of the image below the mosaic), as that would actually require additional code to implement, and, again, even more so to do well...

Everything else is definitely present out-of-the-box. This is a absurdly large task for a "challenge", IMHO, but it's all perfectly doable out-of-the-box.

Granted I haven't written my own mosaic generator, but it seems little more than iteration and averages.
If you make the pictures really small relative to the mosiac, to the point that pictures are very nearly just pixels, yes, that works.

However, the next time you see a professionally-done photomosaic, take a moment and really look at it. Especially look at the sharp lines of contrast in the original image. If the mosaic draws from a large source of images, you'll find that you can follow the line through the source images themselves, not just between images. For instance, if you've got a sharp horizontal beige/blue line, you will find that the algorithm will pick up an image of a sunny desert day or something where the line for the horizon is approximately correct.

To do a quality job requires at least edge detection and some fuzzy matching of the primary edges of images, which also means you need to break the image down into more than just averages, you need to be counting the colors of segments of the images.

Nothing impossible about this, of course, it's just that it's an awful lot of work for a challenge like this, considering the stakes.

I am probably missing something, but I would think that treating each sub-image as its own grid would be more than enough for a decent mosaic generator. It seems to me you would get your edge detection for free this way. I just don't think it would be hard, but, again, I haven't done it myself so I'm sure there are surprises within.