如何乙炔每个单元的面积?
32视图(30天)
显示旧的评论
答案(1)
图像分析
2023年5月25日在32
7评论
Warid伊斯兰教
2023年5月25日在48
谢谢你的回应。我试图实现图像分割的教程。我有一个问题你可以看到边界定义的红色不对应同样的原始图(边界是由白色)。有什么建议,我们将不胜感激。我试着下面的代码:
一个= rgb2gray (imread (“thumbnail_image002.png”));
图中,imshow (a)
thresholdValue = 100;
binaryImage = > thresholdValue;
道具= regionprops (binaryImage,“所有”);
numberOfBlobs =元素个数(道具);
边界= bwboundaries (binaryImage);
numberOfBoundaries =大小(边界,1);
持有在;%不要让边界吹走显示图像。
为k = 1: numberOfBoundaries
thisBoundary = {k}边界;%获得这个特定的blob的边界。
x = thisBoundary (:, 2);%第2列的列,这是x。
y = thisBoundary (: 1);%第1列的行,这是x。
情节(x, y,的r -,“线宽”2);%绘制边界为红色。
结束
持有从;
为k = 1: numberOfBlobs%遍历所有气泡。
blobArea =道具(k) .Area;%得到区域。
流(1,# % 2 d % 17.1 f % 11.1 f % 8.1 f % 8.1 f % 8.1 f % 8.1 f \ n 'k blobArea);
结束
Warid伊斯兰教
2023年6月13日在33
我试着从图像分割教程下面的代码:
grayImage = rgb2gray (imread (“flox2 (1) .tif”));
imshow (grayImage []);
轴在;
标题(的原始灰度图像,“字形大小”12);
集(gcf,“位置”get (0,“拉”));%最大化图。
消息= sprintf (“左点击并按住开始绘画。\ nSimply抬起鼠标按钮来完成的);
uiwait(对话框(消息));
仁人家园= drawfreehand分部();
%创建一个二进制图像(“面具”)从ROI对象。
binaryImage = hFH.createMask ();
xy = hFH.getPosition;
%现在让它小所以我们可以展示更多的图片。
次要情节(2、3、1);
imshow (grayImage []);
轴在;
标题(的原始灰度图像,“字形大小”12);
%显示徒手画的面具。
次要情节(2、3、2);
imshow (binaryImage);
轴在;
标题(“该地区的二元掩模”,“字形大小”12);
%标签二进制图像和计算机质心和质心。
labeledImage = bwlabel (binaryImage);
测量= regionprops (binaryImage grayImage,…
“区域”,“重心”,“WeightedCentroid”,“周长”);
面积= measurements.Area
重心= measurements.Centroid
centerOfMass = measurements.WeightedCentroid
周长= measurements.Perimeter
%计算区域,以像素为单位,他们吸引了。
numberOfPixels1 =总和(binaryImage (:))
%的另一种方法计算,考虑了分数像素。
numberOfPixels2 = bwarea (binaryImage)
%得到徒手画的边界地区的坐标。
structBoundaries = bwboundaries (binaryImage);
xy = structBoundaries {1};% n除以2的x, y坐标。
x = xy (:, 2);%列。
y = xy (: 1);%的行。
次要情节(2、3、1);在原始图像%的阴谋。
持有在;%不吹走。
情节(x, y,“线宽”2);
drawnow;%迫使它立即画。
%烧到图像通过设置它255年无论面具是正确的。
burnedImage = grayImage;
burnedImage (binaryImage) = 255;
%显示图像的面具”了。”
次要情节(2、3、3);
imshow (burnedImage);
轴在;
标题= sprintf (“新形象\ nmask烧成形象”);
标题(标题,“字形大小”、字形大小);
%掩模图像并显示它。
%将只保留图像的一部分,在面具,零以外的面具。
blackMaskedImage = grayImage;
blackMaskedImage (~ binaryImage) = 0;
次要情节(2、3、4);
imshow (blackMaskedImage);
轴在;
标题(“蒙面以外地区”,“字形大小”12);
%计算均值
meanGL =意味着(blackMaskedImage (binaryImage));
%把十字架centriod和质心
持有在;
情节(质心(1),重心(2),' r + ',“MarkerSize”30岁的“线宽”2);
情节(centerOfMass (1) centerOfMass (2),g +的,“MarkerSize”,20岁,“线宽”2);
%做同样的但在区域变黑。
insideMasked = grayImage;
insideMasked (binaryImage) = 0;
次要情节(2、3、5);
imshow (insideMasked);
轴在;
标题(掩盖了地区内的,“字形大小”、字形大小);
%现在作物图像。
leftColumn = min (x);
rightColumn = max (x);
背线= min (y);
底线= max (y);
宽度= rightColumn - leftColumn + 1;
身高=底线-背线+ 1;
croppedImage = imcrop (blackMaskedImage [leftColumn,背线宽度、高度]);
%显示裁剪图像。
次要情节(2、3、6);
imshow (croppedImage);
轴在;
标题(“裁剪图像”,“字形大小”12);
%把十字架centriod和质心
持有在;
情节(质心(1)-leftColumn质心(2)背线,' r + ',“MarkerSize”30岁的“线宽”2);
情节(centerOfMass (1) -leftColumn centerOfMass(2)背线,g +的,“MarkerSize”,20岁,“线宽”2);
%的报告结果。
消息= sprintf (在绘制区域内的平均值= %。3 f \ nNumber像素= % = % d \ nArea像素。2 f \ nperimeter = %。2 f \ nCentroid (x, y) = (%。1f, %.1f)\nCenter of Mass at (x,y) = (%.1f, %.1f)\nRed crosshairs at centroid.\nGreen crosshairs at center of mass.',…
meanGL、numberOfPixels1 numberOfPixels2周边,…
质心(1),重心(2),centerOfMass (1) centerOfMass (2));
对话框(消息);
我想手动绘制区域使用drawfreehand()函数并分别计算个别地区的地区。然而,我无法画出多个区域从图像。有什么建议,我们将不胜感激。
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。