how can we do "8-coarse division of RGB color space" for dominant color extraction?
1 次查看(过去 30 天)
显示 更早的评论
回答(2 个)
Image Analyst
2012-12-31
7 个评论
Image Analyst
2012-12-31
It looks like the FAQ applies here: http://matlab.wikia.com/wiki/FAQ#Can_you_program_up_the_algorithm_in_this_article_for_me_and_explain_it_to_me.3F, though it looks somewhat interesting so if I can find the time today or tomorrow maybe I can read the paper.
Walter Roberson
2012-12-31
dImage = im2double(YourImage);
binned_image = round(dImage);
quadrant_num = binned_image(:,:,1) * 4 + binned_image(:,:,2) * 2 + binned_image(:,:,1);
quadrant 0 would be (low red, low blue, low green), quadrant 1 would be (low red, low blue, high green), quadrant 2 would be (low red, high blue, low green), and so on up to quadrant 7 as (high red, high blue, high green)
You might want to add 1 to the quadrant number, if you want to use it as an index.
10 个评论
Walter Roberson
2013-1-1
Okay, here it is:
dImage = im2double(YourImage);
binned_image = round(dImage);
quadrant_num = uint8( binned_image(:,:,1) * 4 + binned_image(:,:,2) * 2 + binned_image(:,:,1) );
quadrant_num will now be exactly like rgb2ind() in that it will return a 2D array of uint8() values, each of which is an "ind". Keep in mind that exactly like rgb2ind(), the value 0 represents the first color in the color map, and 1 represents the second color, and so on.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!