如何独立的单元阵列相同像素的RGB值吗?

4视图(30天)
我有一个图像使用不同的RGB颜色值“例子”。我已经确定了每个像素的RGB值,存储坐标,称为x和y,细胞大小不一的数组。我需要找到每个形状的中心是由像素与一定的RGB值。通过将值存储在细胞我知道有多少像素属于某种颜色区,我可以带的均值坐标。
然而,其中一个RGB值图像中出现两次,在未连接的形状。这意味着中心的观点是不正确的。我现在的方法可以改变所以我可以正确识别的中心点的形状吗?
任何帮助或建议将不胜感激。

接受的答案

图像分析
图像分析 2022年3月5日
为什么复杂的事情,一个单元阵列?你应该这样做。
仅仅使用ColorThresholder(用HSV颜色空间,它在应用程序选项卡的工具带)来确定黄色,然后导出功能。调用该函数的面具,然后调用regionprops()重心。
3评论
图像分析
图像分析 2022年3月19日
见下面的完整的演示:
%演示图像分析师找到质心的蓝色斑点。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
clearvars;
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 16;
流(运行% s的开始。m…\ n”,mfilename);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%读入图像。
文件夹= pwd;
baseFileName =“coloredchips.png”;
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~存在(fullFileName“文件”)
%的文件不存在,没有找到它在该文件夹。
%检查整个搜索路径(其他文件夹)去掉文件的文件夹。
fullFileNameOnSearchPath = baseFileName;%没有路径。
如果~存在(fullFileNameOnSearchPath“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
rgbImage = imread (fullFileName);
(行、列,numberOfColorChannels) =大小(rgbImage)
%显示原始RGB图像。
次要情节(2,1,1);
imshow (rgbImage []);
轴(“上”,“图像”);
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
标题= sprintf (的原始RGB图像:“% s”\ n % d % d列的行baseFileName,行、列);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%设置图属性:
%全屏放大图。
hFig1 = gcf;
hFig1。单位=“归一化”;
hFig1。WindowState =“最大化”;
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
hFig1。Name =的演示图像分析师”;
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%蓝筹股。
掩码= createMask (rgbImage);
%显示面具的形象。
次要情节(2,1,2);
imshow(面具,[]);
轴(“上”,“图像”);
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
标题= sprintf (“面具”形象);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -)
%测量质心
道具= regionprops(面具,“重心”);
xy = vertcat (props.Centroid)
xCentroids = xy (: 1);
yCentroids = xy (:, 2);
%显示图像的质心
持有;
k = 1:长度(道具)
thisx = xCentroids (k);
thisy = yCentroids (k);
str = sprintf (“Blob (% # % d。1 f % .1f) 'k thisx thisy)
情节(thisx thisy,' r + ',“线宽”2,“MarkerSize”,20);
文本(thisx thisy, str,“HorizontalAlignment”,“左”,“VerticalAlignment”,“中间”,
“字形大小”,18岁,“FontWeight”,“大胆”,“颜色”,“r”)
结束
持有;
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
函数[BW, maskedRGBImage] = createMask (RGB)
% createMask阈值从colorThresholder应用RGB图像使用自动生成的代码。
% (BW, MASKEDRGBIMAGE] = createMask (RGB)阈值图像RGB使用
%从colorThresholder应用。色彩和自动生成的代码
%范围内设置每个通道的色彩应用。
在BW %分割掩模返回,面具和复合
%在maskedRGBImage返回原始RGB图像。
%由colorThresholder自动生成应用程序——3月19日- 2022
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%将RGB图像转换为选择的颜色空间
I = rgb2hsv (RGB);
%定义通道1基于直方图的阈值设置
channel1Min = 0.501;
channel1Max = 0.787;
%定义通道2基于直方图的阈值设置
channel2Min = 0.754;
channel2Max = 1.000;
%定义通道3基于直方图的阈值设置
channel3Min = 0.692;
channel3Max = 1.000;
%基于直方图阈值选择创建蒙版
sliderBW =(我(::1)> = channel1Min) &(我(:,:1)< = channel1Max) &
(我(::2)> = channel2Min) &(我(:,:2)< = channel2Max) &
(我(::3)> = channel3Min) &(我(:,:,3)< = channel3Max);
BW = sliderBW;
%初始化输出掩盖图像基于输入图像。
maskedRGBImage = RGB;
%设置背景像素,BW假为零。
maskedRGBImage (repmat (~ BW, [1 1 3])) = 0;
结束

登录置评。

更多的答案(0)

类别

找到更多的在修改图片的颜色帮助中心文件交换

标签

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!