2015-09-04 90 views
-2

我想分析在MATLAB中带有扩展名'.png'的图像的像素颜色。我想返回在特定RGB值的某个范围内着色的像素数量。在MATLAB中返回像素颜色

我正在尝试使用'imread' function来分析图像。它返回值为0-255的数组。如何对这些值进行排序以返回接近某个数字定义的颜色的像素数量?

+0

喜欢的东西[imhist(http://www.mathworks.com/help/images/ref/imhist.html)? – beaker

回答

0

给定指定的公差tol,您可以通过将图像分成三个通道并检查每个通道中的每种颜色是否在该范围内来确定某个范围内有多少种颜色。使用nnz来检查非零像素的总数是需要考虑的。您可以创建logical矩阵,检查每个通道是否在每种颜色的特定容差范围内,然后将它们全部逻辑与并检查计算后得到的非零条目数:

类似这样,给定你的图像存储在im

R = 100; 
G = 128; 
B = 123; %// Example 
tol = 5; %// +/- 5 pixels 
imd = double(im); %// For precision 
num = nnz(abs(imd(:,:,1)-R) < tol & ... 
      abs(imd(:,:,2)-G) < tol & ... 
      abs(imd(:,:,3)-B) < tol);