一个人怎么能区分前景和背景检测边缘的幼苗?
26日视图(30天)
显示旧的评论
答案(1)
图像分析
2023年6月15日21:08
这很简单。简单地使用颜色阈值的应用程序选项卡上带的工具。使用它和导出功能。如果你不能弄清楚回信。
11日评论
图像分析
2023年6月16日2:01
好吧,我猜你有很多麻烦。试试这个:
%演示区和一个绿色的边界地区。
%的图像分析。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
clearvars;
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 18;
流(运行% s的开始。m…\ n”,mfilename);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%读入图像。
文件夹= pwd;
baseFileName =“dynamic.png”;
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~存在(fullFileName“文件”)
%的文件不存在,没有找到它在该文件夹。
%检查整个搜索路径(其他文件夹)去掉文件的文件夹。
fullFileNameOnSearchPath = baseFileName;%没有路径。
如果~存在(fullFileNameOnSearchPath“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
rgbImage = imread (fullFileName);
(行、列,numberOfColorChannels) = (rgbImage)大小;
%显示RGB图像尺寸。
次要情节(2 2 1);
imshow (rgbImage []);
轴(“上”,“图像”);
标题= sprintf (“原始图像:“% s”,baseFileName);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%设置图属性:
%全屏放大图。
hFig1 = gcf;
hFig1。单位=“归一化”;
hFig1。WindowState =“最大化”;
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
hFig1。Name =的演示图像分析师”;
%的阈值图像找到叶。
[面具,maskedRGBImage] = createMask (rgbImage)
%最大团
% = bwareafilt面具(面具);
%显示二进制图像。
次要情节(2,2,2);
imshow(面具,[]);
轴(“上”,“图像”);
标题= sprintf (“面具”形象);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%得到该地区2不同的方式。
area1 = bwarea(面具)%重量根据当地轮廓的形状。
area2 =总和(面具(:))%这是一个简单的像素计数。
%的面积(像素计数)和Feret直径。
道具= regionprops(面具,“区域”)
allAreas = [props.Area]
标题= sprintf (“面具的形象。% d blob。总面积= % d像素”。元素个数(allAreas)和(allAreas));
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
%情节的边界气泡在上面的覆盖原始灰度图像
使用bwboundaries返回的坐标()%。
% bwboundaries()返回一个单元阵列,每个单元格包含对象的行/列坐标的图像。
次要情节(2、2、3);
imshow (rgbImage);%可选:显示原始图像。或者你可以把二进制图像显示如果你想。
%这里就是我们每个团的边界。
边界= bwboundaries(面具);
%边界单元阵列,每个团的一个细胞。
%在每个单元是一个n除以2的坐标列表(行、列)格式。注意:没有(x, y)。
% 1列是行,或y。第2列列,或x。
numberOfBoundaries =大小(边界,1);%计算边界,所以我们可以使用它在我们的for循环
%这就是我们实际上情节中的每一个blob叠加的界限。
持有在;%不要让边界吹走显示图像。
为k = 1: numberOfBoundaries
thisBoundary = {k}边界;%获得这个特定的blob的边界。
x = thisBoundary (:, 2);%第2列的列,这是x。
y = thisBoundary (: 1);%第1列的行,这是y。
情节(x, y,的r -,“线宽”2);%绘制边界为红色。
结束
持有从;
标题= sprintf (' % d轮廓,从bwboundaries () ',numberOfBoundaries);
字形大小= 15;
标题(标题,“字形大小”、字形大小);
轴(“上”,“图像”);%确定图像不是人为紧张因为屏幕的长宽比。
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
函数[BW, maskedRGBImage] = createMask (RGB)
% createMask阈值从colorThresholder应用RGB图像使用自动生成的代码。
% (BW, MASKEDRGBIMAGE] = createMask (RGB)阈值图像RGB使用
%从colorThresholder应用。色彩和自动生成的代码
%范围内设置每个通道的色彩应用。
在BW %分割掩模返回,面具和复合
%在maskedRGBImage返回原始RGB图像。
%由colorThresholder自动生成应用截止2023年6月15日
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%将RGB图像转换为选择的颜色空间
I = rgb2hsv (RGB);
%定义通道1基于直方图的阈值设置
channel1Min = 0.160;
channel1Max = 0.302;
%定义通道2基于直方图的阈值设置
channel2Min = 0.303;
channel2Max = 1.000;
%定义通道3基于直方图的阈值设置
channel3Min = 0.257;
channel3Max = 0.986;
%基于直方图阈值选择创建蒙版
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;
结束
图像分析
2023年6月16日12:39
是的,但是你没有说为什么这是非常重要的。周长形象不是最后一次,最后一步你的分析。你要
做某事
与图片对吗?不仅仅是看和说,“酷,那很有趣!”
不管怎样,你可以简单地叫
bwperim
上的面具。我添加了一行代码的脚本。当你运行它DL模型进行训练。(你知道你可以用MATLAB的两个实例,对吧?所以你可以在一个实例而深度学习培训工作在另一个实例。)
%演示区和Feret区段的一片叶子。
%的图像分析。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
clearvars;
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 18;
流(运行% s的开始。m…\ n”,mfilename);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%读入图像。
文件夹= pwd;
baseFileName =“dynamic.png”;
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~存在(fullFileName“文件”)
%的文件不存在,没有找到它在该文件夹。
%检查整个搜索路径(其他文件夹)去掉文件的文件夹。
fullFileNameOnSearchPath = baseFileName;%没有路径。
如果~存在(fullFileNameOnSearchPath“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
rgbImage = imread (fullFileName);
(行、列,numberOfColorChannels) = (rgbImage)大小;
%显示RGB图像尺寸。
次要情节(2 2 1);
imshow (rgbImage []);
轴(“上”,“图像”);
标题= sprintf (“原始图像:“% s”,baseFileName);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%设置图属性:
%全屏放大图。
hFig1 = gcf;
hFig1。单位=“归一化”;
hFig1。WindowState =“最大化”;
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
hFig1。Name =的演示图像分析师”;
hFig1。NumberTitle =“关闭”
%的阈值图像找到叶。
[面具,maskedRGBImage] = createMask (rgbImage)
%最大团
% = bwareafilt面具(面具);
%显示二进制图像。
次要情节(2,2,2);
imshow(面具,[]);
轴(“上”,“图像”);
标题= sprintf (“面具”形象);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%得到该地区2不同的方式。
area1 = bwarea(面具)%重量根据当地轮廓的形状。
area2 =总和(面具(:))%这是一个简单的像素计数。
%的面积(像素计数)和Feret直径。
道具= regionprops(面具,“区域”)
allAreas = [props.Area]
标题= sprintf (“面具的形象。% d blob。总面积= % d像素”。元素个数(allAreas)和(allAreas));
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
%情节的边界气泡在上面的覆盖原始灰度图像
使用bwboundaries返回的坐标()%。
% bwboundaries()返回一个单元阵列,每个单元格包含对象的行/列坐标的图像。
次要情节(2、2、3);
imshow (rgbImage);%可选:显示原始图像。或者你可以把二进制图像显示如果你想。
%这里就是我们每个团的边界。
边界= bwboundaries(面具);
%边界单元阵列,每个团的一个细胞。
%在每个单元是一个n除以2的坐标列表(行、列)格式。注意:没有(x, y)。
% 1列是行,或y。第2列列,或x。
numberOfBoundaries =大小(边界,1);%计算边界,所以我们可以使用它在我们的for循环
%这就是我们实际上情节中的每一个blob叠加的界限。
持有在;%不要让边界吹走显示图像。
为k = 1: numberOfBoundaries
thisBoundary = {k}边界;%获得这个特定的blob的边界。
x = thisBoundary (:, 2);%第2列的列,这是x。
y = thisBoundary (: 1);%第1列的行,这是y。
情节(x, y,的r -,“线宽”2);%绘制边界为红色。
结束
持有从;
标题= sprintf (' % d轮廓,从bwboundaries () ',numberOfBoundaries);
字形大小= 15;
标题(标题,“字形大小”、字形大小);
轴(“上”,“图像”);%确定图像不是人为紧张因为屏幕的长宽比。
%得到周长作为图像而不是在上面(x, y)坐标。
perimImage = bwperim(面具);
次要情节(2、2、4);
imshow (perimImage []);
轴(“上”,“图像”);
标题= sprintf (“周边的形象”);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
函数[BW, maskedRGBImage] = createMask (RGB)
% createMask阈值从colorThresholder应用RGB图像使用自动生成的代码。
% (BW, MASKEDRGBIMAGE] = createMask (RGB)阈值图像RGB使用
%从colorThresholder应用。色彩和自动生成的代码
%范围内设置每个通道的色彩应用。
在BW %分割掩模返回,面具和复合
%在maskedRGBImage返回原始RGB图像。
%由colorThresholder自动生成应用截止2023年6月15日
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%将RGB图像转换为选择的颜色空间
I = rgb2hsv (RGB);
%定义通道1基于直方图的阈值设置
channel1Min = 0.160;
channel1Max = 0.302;
%定义通道2基于直方图的阈值设置
channel2Min = 0.303;
channel2Max = 1.000;
%定义通道3基于直方图的阈值设置
channel3Min = 0.257;
channel3Max = 0.986;
%基于直方图阈值选择创建蒙版
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;
结束
图像分析
2023年6月16日14:09
它取决于你如何定义绿色。
你玩耍的滑块颜色阈值?
你也可以单独blob和分水岭。
再一次,
为什么
有必要周长,分离?我可能会放弃帮助,除非你帮我帮你回答我的问题。(我不喜欢我的问题忽略了特别的帮助
你
)。不要只是说(像很多人一样)“我需要它,因为我需要它”之类的。
图像分析
2023年6月16日在33
祝你好运与你的任务。这是一个接口,可能会帮助处理数以百计的图片:
确定叶片形状可能需要消除阀杆。您可以使用imopen(),但会改变周边的形状略所以你必须巧妙地工艺算法,只有去掉茎、叶边不改变。
如果这个回答解决原来的问题,那么你能
请点击“接受这个答案”链接
授予“点”声誉的回答者对他们的努力在帮助你吗?他们会很感激。Thanks in advance. Note: you can only accept one answer (so pick the best one) but you can click the "
投票
”图标,你想要尽可能多的答案。投票给一个答案也会奖荣誉点。
图像分析
2023年6月17日13:29
@Dynamic
我不能也不会。我不想负责你大学开除了欺骗和不道德把自己在别人的代码。你可能会想冒这个险,但是我不想启用它。加上你不学习什么如果我完全为你做作业,给你100%的自动化,完成,交钥匙代码。如果你想,那么雇佣顾问。你不会学到任何东西但是他们会给你“完全自动化的代码”。
我给你大量的代码,再加上一个GUI为批处理一堆文件。我认为这应该足以让你继续下去。如果你想要一个非gui,批处理脚本,查看常见问题解答:
https://matlab.fandom.com/wiki/FAQ How_can_I_process_a_sequence_of_files吗?
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。