color analyzer and correction tool
Posted: 2012-04-06T00:54:50-07:00
First of all sorry, this post is so long, but it is not simple to describe the functions I would like to see in IM, if they are not yet here...
Does IM has any analyzer for precise and intelligent detection of colors?
If not, just took this post like something I look for, and you could develop.
I have uploaded 5MB image but with 1:30 waiting time http://www.crocko.com/4DB350D539C04468B ... st_del.jpg to illustrate what I would like to analyzer from the image.
There is few sets of aerial photos on my computer, they have different colors and I would like to join all photos together but would like to correct the colors. I don't know if you have any color analyzer. My main idea is to get work with areas, not whole images.
I use comparison for illustration. Photoshop can use color selection, but not much intelligent. You can set color and tolerance when you try to find some color. But I would like to set tolerance (not right word) for every color. I would like to find characteristics for every color (first step, manual). On the image above I would like to analyze areas with forests. I know that PS has some graphical functions for example with Levels, where you see characteristics of the colors for some area. So my idea is to select some colors first.
Left strip on the image, forest values are:
#3e4b31 (C:68%, M:49%, Y:81%, K:46%)
#434e3e (C:68%, M:50%, Y:71%, K:42%)
#404d33 (C:68%, M:48%, Y:80%, K:44%)
#2d3b2a (C:72%, M:53%, Y:77%, K:58%)
#384635 (C:70%, M:51%, Y:74%, K:48%)
So it would be good to have a way to find some color(s) and to define minimum and maximum values that are acceptable for the certain color in the resulting selection. I mean something like this:
Next step should be to name the selection, "forest1".
Till now you maybe have some function to this if you work with a smaller image. But now you have bigger image like I don' know, e.g. 16000x16000px and there are blocks by 4000x4000px. One block has darkers colors and second block has lighter colors. So to analyze next block I need to define next colors, but problem is, that I don't want this selection should be from the block which was already analyzed. Probably there would be some function to detect that in certain area, are pixels already selected and this area should not be proccessed into next selection.
So I define next forest colors for the second strip:
#041205 (C:75%, M:60%, Y:72%, K:83%)
#18251e (C:77%, M:59%, Y:71%, K:73%)
#222f26 (C:75%, M:57%, Y:72%, K:66%)
#283629 (C:74%, M:54%, Y:74%, K:61%)
#47544b (C:69%, M:51%, Y:63%, K:36%)
and similar colors. Lets call this for example "forest2"
Last strip, forest colors:
light greens:
#475d39 (C:69%, M:43%, Y:84%, K:34%)
#31461d (C:73%, M:47%, Y:98%, K:51%)
#334821 (C:73%, M:47%, Y:96%, K:49%)
#355224 (C:75%, M:43%, Y:100%, K:42%)
#24361e (C:75%, M:52%, Y:85%, K:63%)
dark greens:
#0a0e00 (C:71%, M:62%, Y:72%, K:84%)
#1b1c17 (C:71%, M:64%, Y:70%, K:78%)
#454638 (C:63%, M:55%, Y:71%, K:47%)
#222b1a (C:71%, M:56%, Y:79%, K:70%)
So the analyze should sensitively find similar colors. But the main goal is to search by little block, so I think there would be necessary to used some grid system, because you need to know what square has been searched and had a result. For this it would be good to search bigger blocks like 25x25 to detect if there was some positive result. Next if there was positive result, then evaluate, bigger area for example in square 277x277 to ensure no positive result was found here. For next search and next strips this area should be avoided. So you know (you remember) what you found and do not next search in that area. I could for example search
1) strip one 1.1) forest 1.2) grass and fields 1.3) rivers 1.4) other water surface
2) strip two 2.1) forest 2.2) grass and fields 2.3) rivers 2.4) other water surface
2) strip two 3.1) forest 3.2) grass and fields 3.3) rivers 3.4) other water surface
There is one more problem:
For correction of colors I will need to select all pixels by named selections. But all pixels of the image must by adjusted, so what I need is to select adjacent pixels (pixels adjacent to the named selection, if there is nor selection yet). This way all pixels would be selected and named.
Next step is "What to do with the selections?"
I would need to define what selection I want to use, and apply color corrections (probably level or any other function to correct this problem).
Edit
One more idea how to make the selection more precise and correct. In Photoshop, there is function levels. If you select little area of forest, you can PS levels will auto analyze the contrast of the area and gives this curve:
http://www.noeticart.com/photos/blog/le ... log_01.jpg
Contrast is one of the most important issues when comparing two photos or two segments. So if you could analyze a square in grid you will see that strip one forest has high values between 2,56 and 1,57 (I don't know what the number means but it is the horizontal position on the axis). The darker green on strip two has values from 0 to 1. This would be also good information to define if it is correct area! It could be first step, before color analyzer. If we could define, contrast on R,G,B and C,Y,M,K channels separately, that would be precise enough.
Maybe whole this post could be shortened on this basic idea. If we could select area by defining contrast level in square of the grid, I could simply select the areas that need the correction!
Does IM has any analyzer for precise and intelligent detection of colors?
If not, just took this post like something I look for, and you could develop.
I have uploaded 5MB image but with 1:30 waiting time http://www.crocko.com/4DB350D539C04468B ... st_del.jpg to illustrate what I would like to analyzer from the image.
There is few sets of aerial photos on my computer, they have different colors and I would like to join all photos together but would like to correct the colors. I don't know if you have any color analyzer. My main idea is to get work with areas, not whole images.
I use comparison for illustration. Photoshop can use color selection, but not much intelligent. You can set color and tolerance when you try to find some color. But I would like to set tolerance (not right word) for every color. I would like to find characteristics for every color (first step, manual). On the image above I would like to analyze areas with forests. I know that PS has some graphical functions for example with Levels, where you see characteristics of the colors for some area. So my idea is to select some colors first.
Left strip on the image, forest values are:
#3e4b31 (C:68%, M:49%, Y:81%, K:46%)
#434e3e (C:68%, M:50%, Y:71%, K:42%)
#404d33 (C:68%, M:48%, Y:80%, K:44%)
#2d3b2a (C:72%, M:53%, Y:77%, K:58%)
#384635 (C:70%, M:51%, Y:74%, K:48%)
So it would be good to have a way to find some color(s) and to define minimum and maximum values that are acceptable for the certain color in the resulting selection. I mean something like this:
Code: Select all
-selectcolor #384635 (C1:69%, C2:71%, M1:50% M2:52%, Y1:72%, Y2:76%, K1:47%, K2:49%)
Till now you maybe have some function to this if you work with a smaller image. But now you have bigger image like I don' know, e.g. 16000x16000px and there are blocks by 4000x4000px. One block has darkers colors and second block has lighter colors. So to analyze next block I need to define next colors, but problem is, that I don't want this selection should be from the block which was already analyzed. Probably there would be some function to detect that in certain area, are pixels already selected and this area should not be proccessed into next selection.
So I define next forest colors for the second strip:
#041205 (C:75%, M:60%, Y:72%, K:83%)
#18251e (C:77%, M:59%, Y:71%, K:73%)
#222f26 (C:75%, M:57%, Y:72%, K:66%)
#283629 (C:74%, M:54%, Y:74%, K:61%)
#47544b (C:69%, M:51%, Y:63%, K:36%)
and similar colors. Lets call this for example "forest2"
Last strip, forest colors:
light greens:
#475d39 (C:69%, M:43%, Y:84%, K:34%)
#31461d (C:73%, M:47%, Y:98%, K:51%)
#334821 (C:73%, M:47%, Y:96%, K:49%)
#355224 (C:75%, M:43%, Y:100%, K:42%)
#24361e (C:75%, M:52%, Y:85%, K:63%)
dark greens:
#0a0e00 (C:71%, M:62%, Y:72%, K:84%)
#1b1c17 (C:71%, M:64%, Y:70%, K:78%)
#454638 (C:63%, M:55%, Y:71%, K:47%)
#222b1a (C:71%, M:56%, Y:79%, K:70%)
So the analyze should sensitively find similar colors. But the main goal is to search by little block, so I think there would be necessary to used some grid system, because you need to know what square has been searched and had a result. For this it would be good to search bigger blocks like 25x25 to detect if there was some positive result. Next if there was positive result, then evaluate, bigger area for example in square 277x277 to ensure no positive result was found here. For next search and next strips this area should be avoided. So you know (you remember) what you found and do not next search in that area. I could for example search
1) strip one 1.1) forest 1.2) grass and fields 1.3) rivers 1.4) other water surface
2) strip two 2.1) forest 2.2) grass and fields 2.3) rivers 2.4) other water surface
2) strip two 3.1) forest 3.2) grass and fields 3.3) rivers 3.4) other water surface
There is one more problem:
For correction of colors I will need to select all pixels by named selections. But all pixels of the image must by adjusted, so what I need is to select adjacent pixels (pixels adjacent to the named selection, if there is nor selection yet). This way all pixels would be selected and named.
Next step is "What to do with the selections?"
I would need to define what selection I want to use, and apply color corrections (probably level or any other function to correct this problem).
Edit
One more idea how to make the selection more precise and correct. In Photoshop, there is function levels. If you select little area of forest, you can PS levels will auto analyze the contrast of the area and gives this curve:
http://www.noeticart.com/photos/blog/le ... log_01.jpg
Contrast is one of the most important issues when comparing two photos or two segments. So if you could analyze a square in grid you will see that strip one forest has high values between 2,56 and 1,57 (I don't know what the number means but it is the horizontal position on the axis). The darker green on strip two has values from 0 to 1. This would be also good information to define if it is correct area! It could be first step, before color analyzer. If we could define, contrast on R,G,B and C,Y,M,K channels separately, that would be precise enough.
Maybe whole this post could be shortened on this basic idea. If we could select area by defining contrast level in square of the grid, I could simply select the areas that need the correction!