From: John on
Thank you . Now i can See what type of a data set I'm working with and the type of algorithm I should create to make my program code run @ optimal efficiency .
From: Oliver Woodford on
I'm dropping out now - time to get back to work! Thanks to the contest team for another fun problem. I look forward to seeing the quality of images at the end of the week. Best of luck to everyone.

Oliver
From: Nicholas Howe on
"Oliver Woodford" <o.j.woodford.98(a)cantab.net> wrote in message <hrevgk$flv$1(a)fred.mathworks.com>...
> I'm dropping out now - time to get back to work! Thanks to the contest team for another fun problem. I look forward to seeing the quality of images at the end of the week. Best of luck to everyone.
>
> Oliver

Oliver,
If you're dropping out, would you mind sharing the key ideas behind your twilight winner?
From: Alan Chalker on
Is there a stats page with the new website like there used to be with the old one?
From: Oliver Woodford on
"Nicholas Howe" wrote
> Oliver,
> If you're dropping out, would you mind sharing the key ideas behind your twilight winner?

Hi Nick

Sure. There are 3 key concepts:

1. I made sure my queries gave a unique and exact solution for the sum of each region, the regions being the intersections of all query masks. Given n queries that means I can only solve this uniquely for n (or fewer) regions - any more regions and you need regularization. To keep things tractable at every iteration I make each new region a subset of a current region, i.e. each query divides a current region in two. The method I ended up selecting was to divide a given region in half across the middle, either vertically or horizontally. I also made the constraint that no region could be more than twice as long as it was wide. This constraint (and not dividing a region of length 1) is enforced using the value 300 (see code), so remove it to see why it's necessary.

2. The question this poses is which region to split next. You want to split regions that are textured, so you get more information out; splitting a textureless region gains you nothing. At every iteration (query) I kept a record of the maximum (average) colour difference between each region and its neighbours, in both the horizontal and vertical directions. I then split the region with the largest difference, in the direction appropriate to the largest difference, subject to the constraints already mentioned. This was a simple heuristic, but seemed to work well! However, I believe that improving this decision process is where the real improvements will come in this contest.

3. Finally, rather than assign each region the average value for the region at the end, I smooth the image (as real images tend to be smooth, not blocky), still making sure that each region's average is correct. This gives a significant improvement in quality, more so with the edge preserving bilateral filter. Interestingly, the regular sampling grid helped here. Having a non-regular grid messed up the smoothing (try adding the smoothing to my "Prime I" method to see what I mean).

Hope that's useful.
Oliver
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Prev: Single number into vector elements
Next: neural network