Yay, someone is interested. Here is my standard explanation...though despite heavily simplifying it, everyone seems to have a hard time understanding. I suppose that is why I am the first to think of it
http://i126.photobucket.com/albums/p87/RobertJustice/Cameraflowchart1copy.jpg
http://i126.photobucket.com/albums/p87/RobertJustice/Cameraflowchart2copy.jpg
while (head == still intact);
Physical Explanation: Ok, take a deep breath, and here we go.
Imagine a window with light shining through it from the sun. You are inside the house of the window and decide to walk in front of the light. What will happen? You will create a shadow on the wall behind you. The shape of the shadow will be determined by the shape of your body. Every step you take into the light, the greater the shadow on the wall will grow, until after enough steps you will completely block out the light from reaching the wall.
Now, instead of you walking in front of the light, take a flat and square piece of cardboard and pass it in front of the light. Assuming the cardboard's height is enough to instantly block out the length of the light, as you move it across the light you will be solely reducing the horizontal axis. Say, you take 5 individual equal steps until your piece of cardboard blocks out the light completely. Every step you take will cause an overall reduction in the total amount of light reaching the wall. Namely, each step will cause a 20% reduction since 100/5 = 20. So, you have 5 individual reductions of 20% each. Your first step causes a 20% total reduction,
next step a 40%, next 60%, next 80% and finally 100% and total blockage of the light passing through the window.
Ok, now lets quantify the light passing through the window. Say, if you were to measure the quantity of light hitting the wall in total, you would read 10 joules. So, without any reduction due to your piece of cardboard, the wall is receiving 10 joules of energy from the light.
Given that, you now move the piece of cardboard 20% over the light, and then read the total amount of light now hitting the wall. Your measuring device now reads 8 Joules. You take another step and now cover 40% of the wall and make another measurement; your measuring device now reads 6 Joules. You cover 60% and your device reads 4 Joules; cover 80% and it reads 2 Joules; cover 100% and it reads 0 Joules. Based off of our knowledge of total light level without the cardboard reduction (10 Joules), how much of the wall each step would cover (20%), and how much energy we had after each step (8, 6, 4, 2, 0), we can determine how much energy each of the 5 segments of the light hitting the wall possessed. The answer being, 2 Joules.
If we had 10 Joules, take action and now have 8, we can do basic math (10 - 8 = 2) to determine that the total change is 2; and that therefore, the region that we covered was worth 2 (Joules). This also goes for addition. If we had 4 Joules, take action and now have 6, we can use basic algebra to solve for the change [4 + x = 6 ---> (4 + x) - 4 = (6) - 4 ---> x = 2], the change is 2.
Using this method, despite not being able to directly read each region via something like pixels, as long as you know the initial total and new total, you can surmise what the change must have been.
Now...dividing the light hitting the wall into 5 regions, say, region 1, region 2, region 3, region 4 and region 5, you can label each region as having 2 Joules each. Great, you now know how much energy each region in the X AXIS possesses. But what about the Y axis? To determine that, you do the same thing we just did for the X axis, accept instead of stepping with the piece of cardboard from side to side, you must raise the cardboard up from the floor, or equally, down from the ceiling. Using the same method you can determine how much energy each of the Y regions possess.
Now...my camera cannot function off of only knowing the X and Y axis, it must also know the "Z" and "L" axis, which I designate as being from top right to bottom left (Z) and top left to bottom right (L). Essentially, if you were to rotate the light coming through the window by 45 degrees, and attempted the same X and Y scans with the cardboard, your resultant data would be equal to the Z and L axis.
Everything written here is how my camera PHYSICALLY acquires the 4 axis in terms of lines. Moving a piece of cardboard over the light is one way, and was in fact how my prototype worked (accept I used a high torque low speed motor to pull the cardboard on an aluminum sled across a surface on a rotatable metal pipe), however there are many ways to generate the necessary lines.
As for the sensor we discussed as measuring the light hitting the wall, a photodiode can accomplish this task, or even a solar panel can. I used a photodiode in my prototype, with a computer graphing Digital Multi Meter (DMM) to measure the photodiode output and graph it on my laptop.
Now, in our above example, the light hitting the wall was perfectly consistent, hence the perfect 2 Joule reduction in light due to each 20% reduction in light. However, cameras take pictures of inconsistent objects with color and shape, not a single color blob! So, say we repeat the cardboard process, except this time, region 3, the 40% to 60% change, records a 6 Joule to 5 Joule change instead of a 6 Joule to 4 Joule change! What does this mean? Region 3 is worth 1 Joule, and is therefore darker than the rest of the regions of light hitting the wall. However, our initial read was 10 Joules, but we have only read 50% of the light by 60% of the progression! What does this mean? Regions 4 and 5 cannot both be 2 Joules each, at least one of the has to be 3 Joules!
So we continue the process and determine that region 4 is 2 Joules; we have 20% to go and currently are at 7 Joules. So we move the cardboard over the final region and reduce the last 3 Joules to 0 Joules, therefore determining that the final region 5 was worth 3 Joules.
So, what does this all mean? What does breaking an image down into lines along 4 axis instead of pixels do for us? Surely these lines are not the image itself, so why do we bother measuring them? The answer, is that by measuring an image in terms of lines, we can use an infinitely fine mechanical process to surmise portions of the image. Your piece of cardboard, instead of taking 5 steps, what if you were to take 10 steps to cover the image? You would reduce the ambiguity. You would now know how much energy each of the 10 regions now possess, instead of 5 regions. What if you were to take 100 steps? 1000?
1 million? Each time you increase the number of steps, you increase your ability to make smaller pixels, hence increasing the pixel count for the same surface area. Given an infinite amount of time and infinitely fine steps, you could record an infinitely high resolution; and it just so happens that A/D converters are virtually perfectly consistent, and shutters if built right can also be almost infinitely fine in movement.
I claim that infinite steps can result in infinite resolution, but how is this so? Refer to the computational explanation once you fully understand the above explanation.
Computational Explanation: Looking at both pictures, you have an X, Y, Z and L axis. These represent the orientations of the edges in the camera. The X axis edge is horizontal to the light, Y is vertical, Z is 45 degrees to the light with a left bias, and the L is 45 degrees to the light with a right bias. Each number outside the grid represents the total quantity of energy within the direction that its pointer penetrates. Looking at camera flowchart #2, there is a region naming grid which I will be using to reference which spots I am discussing. To calibrate our points of view, know that the "18" of the Y axis overlaps grid points 1, 6, 11, 16, and 21. These grid points refer to the energy levels 7, 2, 5, 4, 0. The "27" of the Y axis overlaps 4, 9, 14, 19, and 24. These grid points refer to the energy levels 3, 3, 9, 3, 9. The "19" of the X axis overlaps 15, 14, 13, 12, 11. These grid points refer to the energy levels 0, 9, 1, 4, 5. The "11" of the Z axis, overlaps 21, 17, 13, 9, 5. These grid points refer to the energy levels 0, 6, 1, 3, 1. The "13" of the L axis overlaps 23, 17, 11. These grid points refer to the energy levels 2, 6 and 5. -----We shall be referring to the designations of the axis numbers from left to right for the Y axis, top to bottom for the X, top to bottom/left to right for the Z, top to bottom/right to left for the L. This would mean that Y axis spot 4 would be 27, X axis spot 2 would be 15, Z axis spot 7 would be 5, L axis spot 9 would be 0. -----We shall refer to the rows as being 1-5 top to bottom, and 1-5 left to right. Therefore, row 3 on the X axis is composed of axis number 19, and row 4 on the Y axis is composed of axis number 27. Do not move on until you fully understand what this all means.
Now...the 1st picture has all of the grid points filled in. I arbitrarily wrote down the grid points, and calculated the axis levels by adding the grid points together. Therefore, Y axis spot 1 is 18, which comes from 7 + 2 + 5 + 4 + 0. L axis spot 6 is 24, which comes from 9 + 9 + 4 + 2.
Ok, so look at picture number 2, the one without any numbers filled into the grid points, and only the axis numbers present. We are going to try to fill in this grid under a single rule: That the numbers you fill into the grid points add up to their respectful axis values. They cannot add up to a value more or less than the axis value. In other words, for the 3d row on the X axis, you need the number to add up to 19. Therefore, grid regions 11, 12, 13, 14, and 15 must add up to the number 19. In picture #1, the grid point values of regions 11, 12, 13, 14, and 15 are 5, 4, 1, 9 and 0. These numbers add up to 19; however, the camera can only record the axis values and not the grid point values since the camera does not possess any pixels...it can only generate lines, hence the axis values.
Look back at picture #2 and ignore the grid values that you saw in picture #1. Now, you do not know the grid values, but you know the axis values across the X, Y, Z and L axis; and you know that the numbers that you put in must add up to to axis values that they refer to. Now, lets look at region 1, the upper left hand corner of the grid. What axis values correspond to this region, region #1? The 1st Y axis row, the 1st X axis row, the 1st Z axis row, and the 5th L axis row. The Y axis requirement is 18 for that row, X axis is 26, Z axis is 7, L axis is 16. Now...the 4 top left, top right, bottom left, and bottom right values are freebies! Because you get an axis value that corresponds to only 1 grid value! In this case, region 1, grid value 7 has Z axis row 1 corresponding to it. Because the Z axis ONLY has that single grid point corresponding to it, and that row must add up to the axis value, the grid point must be the axis value itself! Therefore, region 1 is the 1st row Z axis value. So, put a 7 in there. Now, on to region 2.
Region 2 has an axis cross section of Y axis row 2, X axis row 1, Z axis row 2, and L axis row 4. The Y axis max value is 29, X axis 26, Z axis 9, L axis 26. Now, you already put a 7 into region 1...this means that you only have 19 points left in the X axis row 1, 11 left in Y axis row 1, 0 left in Z axis row 1, and 9 left in L axis row 5.
Perhaps I am not intelligent enough or just do not see the grand causality of my system, but I cannot surmise what region 2 must be, based off of what data we currently have. My C++ program works by literally going through every single possible combination of numbers and outputting the only set that works. We are going to do a similar thing, but with a little more finesse.
Now...the best we can do for now is not go over any limit and choose an average number. Looking at region 2, the lowest limit is 9, for the 2nd row of the Z axis; so, lets go with that limit and make region 2, "9". We now have a total of 16 for X axis row 1, still 10 below the 26 point limit and requirement for X axis row 1. On to region 3. Again, chose an average number. I chose 4. We now have 20 for X axis row 1. Now, region number 5 is a corner number! Therefore, by looking at the axis value corresponding to that region, we can directly surmise its value. L axis row 1 corresponds to region 5. L axis row 1's value is "1", therefore region 5 is 1! Knowing that, we can look back at region 4 and do basic math. 20 + 1 = 21, and we need 26 for X axis row 1, and have 21 so far. Basic math. 26 - 21 = 5. Therefore, region 4 must be "5" under our current number choice. However, if we were to make region 4 "5", we would exceed the limit of L axis row 2, which is "3"! So, we must go back and change a number. Putting "3" in region 4, we now only have 24 out of the 26 that we need for X axis row 1. We cannot touch region 5 or 1, so we have region 2 and 3 to modify. Region 2 is already maxed out, so we must now look at region 3. The lowest limit for region 3 is the "11" of the L axis row 3. Adding the "2" we need to region 3 does not exceed the "11" point limit of L axis row 3! Therefore, we may now place a "6" in region 3, making the total 7 + 9 + 6 + 3 + 1 = 26! We have fulfilled the requirement for the X axis row 1 and have not exceeded any other axis values. (Note that you must fulfill the axis requirement before there are no space left in the axis's applicable regions. Once there are no space left, how can you fulfill the requirement if you have not already?)
Now, on to row 2 of the X axis. We begin with region 6, corresponding with Y axis row 1, X axis row 2, Z axis row 2, and L axis row 6. Look at all of the axis numbers corresponding to that region.....what do you notice? Z axis row 2 is 9! We have already put a "9" in region 2, and region 2 lines up with region 6 with the Z axis row 2! This means that since we have already previously maxed out Z axis row 2, we cannot add anymore numbers to that axis row. Hence forth, we cannot place a number in region 6, it must be "0". On to region # 7. Lining up with region 7, we have region 6, region 2, region 1 and region 3; applicable axis are X axis row 2, Y axis row 2, Z axis row 3, and L axis row 5. Region 6 is 0, so we can ignore its significance to our plans. Region 1 is "7", however the limit of L axis row 5 is "16", so as long as the number we place in region 7 does not exceed "9" (7 + 9 = 16), we are fine. Region 2 has "9" in its place. The limit for Y axis row 2 is "29", so we cannot exceed "20" for region 7; however, we already have a "9" limit due to L axis row 5, so there is no need to consider the 20 limit as relevant for region 7's limit. The limit for X axis row 2 is 15 since we have a "0" in region 6, which is again above the 9 point limit previously prescribed. Finally we have Z axis row 3 with a limit of "17". However, since region 3 corresponds to the same Z axis as our current region 7, we must take the Z axis row 3 limit of 17 and subtract region 3's value of 6 from it, getting 17 - 6 = 11; once again, above the "9" limit previously prescribed by L axis row 5. (NOTE: You are to do the above process for every single region, using the data as is needed to properly derive the grid value) So, once again, choose any average number you wish for region 7, as long as it does not exceed 9. Because you have 3 other regions to fill with a total of 9 to fulfill the L axis row 5 requirement of 16, I would not suggest giving region 7 a "9", as it is unlikely that the following regions for L axis row 5 are all going to be "0". So, I chose "2" for region 7.
On to region 8. You should now be able to surmise what axis rows correspond to each region now. You should also be able to determine which other regions line up with your current regions respectful axis rows, and therefore determine how many 'points' you have left to use for your current region. For region 8, our lowest limit and therefore most relevant limit is that of X axis row 2. The original limit is 15, however region 7 corresponds to our region 8 in terms of the X axis row 2, therefore making the limit 15 - 2 = 13. The second lowest limit is of Z axis row 4, 17 - 3 = 14. Now, as with region 7, we need to consider the probability of other regions relative to the axis that your current region corresponds to requiring values later down the line. So, instead of just maxing out region 8 with "12", I went with "5".
On to region 9. The limit for region 9 is "5", corresponding to an L axis 'natural' limit of "11". reduced to "5" because of region 3's "6". Now...what to place in region 9? Well, notice this. Region 10 is the last region for X axis row 2; therefore, you must reach the X axis row 2 requirement of 15 by then. HOWEVER, region 10 corresponds to the L axis row 2 limit of "3". We already put 3 in region 4! Therefore, due to the number we previously chose, region 10 must be 0 and we must reach "15" via region 9. Since there is no more regions to meddle with, we must put "8" in region 9. What is the result of this forced play? We did not exceed an X, Y or Z axis limit, but we did exceed an L axis limit; L axis row 3 limit of "11". Corresponding to L axis row 3 is region 3 and region 9. Region 3 already has a "6" in its place from before. 6 + 8 = 14, above the 11 point limit. WE HAVE FAILED (*cry*) : ..(....
We must put "8" in region 9 at this point, but we cannot due to a previously prescribed limit. So what do you do? Start over. This is why, if you have it, I wrote the C++ program "Camera program 5++". That program solves for a similar system in around 3 seconds.
END;
Since publicity seems to be my problem...feel free to tell EVERYONE about this. Talk about it on forums, tell your friends, your dog, everything. I need the investors to know about me! Thanks.