【问题标题】:return pixel colors in MATLAB在 MATLAB 中返回像素颜色
【发布时间】:2015-12-01 00:09:47
【问题描述】:
我正在尝试在 MATLAB 中分析扩展名为“.png”的图像的像素颜色。我想返回在某个 RGB 值的某个范围内着色的像素数量。
我正在尝试使用'imread' function 来分析图像。它返回一个值 0-255 的数组。如何对这些值进行排序以返回接近某个数字定义颜色的像素数量?
【问题讨论】:
标签:
image
matlab
image-processing
colors
pixels
【解决方案1】:
给定一个指定的容差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);