实际上,我是Matlab的新手。我不太了解它。 如何计算am图像中的颜色数?
例如,我有DNA微阵列图像(RGB图像),我想计算它有多少黄点,红点和绿点。
答案 0 :(得分:0)
如果您使用RGB,那么它也取决于它是24位,32位还是64位。 例如对于24位图像,有256 * 256 * 256 = 16,777,216的RGB可能组合。 ;)
将颜色R,G,B分开是不是更容易,然后你计算每个分开的subplots
? ;)
试试这个: 获取每个R,G,B通道。然后对其进行直方图计算每个R,G,B像素。
DNA = imread('peppers.png');
redChannel = DNA(:, :, 1);
greenChannel = DNA(:, :, 2);
blueChannel = DNA(:, :, 3);
For red:
[redCount grayCount] = imhist(redPlane);
subplot(2, 2, 2);
imshow( DNA(:,:,2));
>> redcount
ans = 38385 // SAMPLE count
如果您愿意,可以使用1:3的循环。
答案 1 :(得分:0)
如果您有单个像素点而“红色”,“黄色”和“绿色”意味着[255 0 0],[0 255 255]和[0 255 0],那么您的问题可以很简单地回答:
red_dots = (DNA(:,:,1)==255);
n_red_dots = sum(red_dots(:));
yellow_dots = (DNA(:,:,2)==255 & DNA(:,:,3)==255);
n_yellow_dots = sum(yellow_dots(:));
green_dots = (DNA(:,:,2)==255);
n_green_dots = sum(green_dots(:));
如果您的颜色不是那么精确,但仍然是单像素(或者它们大小相同,而您对粗略比例感兴趣),则可以进行阈值处理:
redish_dots = (DNA(:,:,1)>200 & DNA(:,:,2)<40 & DNA(:,:,3)<40);
n_redish_dots = sum(redish_dots(:));
依旧......
答案 2 :(得分:0)
如果我是你的形象,你可以使用它:
size(unique(reshape(I, [], 3), 'rows'), 1)
首先将图像重新整形为nx3,其中n代表图像中的像素数,应用唯一函数折叠相等的行(具有相同颜色的像素),最后得到的矩阵的大小将为您提供独特颜色的数量。