return MATLAB 中的像素颜色
return pixel colors in MATLAB
我正在尝试在 MATLAB 中分析扩展名为“.png”的图像的像素颜色。我想 return 在特定 RGB 值的特定范围内着色的像素数量。
我正在尝试使用 'imread' function 来分析图像。它 return 是一个值 0-255 的数组。如何将这些值排序为 return 接近某种数字定义颜色的像素数量?
给定一个指定的公差 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);
我正在尝试在 MATLAB 中分析扩展名为“.png”的图像的像素颜色。我想 return 在特定 RGB 值的特定范围内着色的像素数量。
我正在尝试使用 'imread' function 来分析图像。它 return 是一个值 0-255 的数组。如何将这些值排序为 return 接近某种数字定义颜色的像素数量?
给定一个指定的公差 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);