提取图像的边界和划分12个相等的部分(马戏团弧/盘)
4视图(30天)
显示旧的评论
你好,
我是一个学生在生物信息学中,和我要做图像使用Matlab进行治疗。我寻找代码(或链接),帮我提取边界和除以12个相等的部分。我想提取格式中使用.roi斐济。我知道如何边界(绿色的)我的形象(你可以看到boundary.png)。把图像分成12个部分,我试图计算质心(红点),但现在我完全迷失了方向。我想,在最后时刻,像FinalWish给图像。png(也就是说,每个划分的边界部分)。你有想法吗?
如果有人请帮助我,我将非常感激!
0评论
答案(4)
图像分析
2021年6月4日
@Sabrina Lounis
的行业,是基于1/12th边界长度,或者你想把图像分成部门辐射的中心,每一个角度或360/12度?如果这将给你两个气泡在一个部门,而不是一个?在这种情况下,你想做什么?
%演示把图像分成部门。通过图像分析。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 20;
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%读入图像
文件夹= pwd;
baseFileName =“example.png”;
grayImage = imread (baseFileName);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%显示图像。
次要情节(3、5、1);
imshow (grayImage []);
轴(“上”,“图像”);
标题(的原始灰度图像,“字形大小”字形大小,“翻译”,“没有”);
impixelinfo;
hFig = gcf;
hFig。WindowState =“最大化”;%可能不会在MATLAB的早期版本中工作。
drawnow;
%得到图像的尺寸。
% numberOfColorChannels应该为灰度图像,= 1和3的RGB彩色图像。
(行、列,numberOfColorChannels) =大小(grayImage)
如果numberOfColorChannels > 1
%这不是灰度像我们预期的颜色。
%提取红色通道(红色线会是白色)。
grayImage = grayImage (:: 1);
结束
% binarize图像
掩码= imbinarize (grayImage);
%摆脱框架外直线边缘的图像
掩码= imclearborder(面具);
%填补
mask2 = imfill(面具,“黑洞”);
%的图片我已经有一块分离出来由红色线。
%的面具(512:860 461)= true;%连接分离blob主斑点。
%最大团
mask2 = bwareafilt(面具,1);
%显示图像。
次要情节(3、5、2);
imshow(面具,[]);
轴(“上”,“图像”);
标题(的二进制图像,“字形大小”字形大小,“翻译”,“没有”);
impixelinfo;
hFig = gcf;
hFig。WindowState =“最大化”;%可能不会在MATLAB的早期版本中工作。
drawnow;
%找到重心。
道具= regionprops (mask2,“重心”)
持有在;
xCenter = props.Centroid (1)
yCenter = props.Centroid (2)
情节(xCenter yCenter,' r + ',“MarkerSize”,100,“线宽”2);
deltaAngle = 360/12
%获得电网的角度。
x =(1:列)- xCenter;
y =(1:行)——yCenter;
(X, Y) = meshgrid (X, Y);
angleGrid = atan2d (Y、X);
次要情节(3、5、3);
imshow (angleGrid []);
colorbar;
标题(“角度形象”,“字形大小”字形大小,“翻译”,“没有”);
角= -180:deltaAngle: 180
为k = 1: 12
angle1 =角(k);
angle2 =角(k + 1);
流(角之间的创造面具% d %。1 f和% .1f。\ n '、k、angle1 angle2);
thisAnglesMask = false(行、列);
thisAnglesMask = angleGrid > angle1 & angleGrid < = angle2;
次要情节(3、5、2 + k);
imshow (thisAnglesMask);
标题= sprintf (“面具% d %之间的角度。1 f和% .1f。”、k、angle1 angle2);
标题(标题);
drawnow;
%现在面具应用二进制图像。
thisMask = & thisAnglesMask面具;%面具CT片。
imshow (thisMask);
标题= sprintf (角之间的部门% d %。1 f和% .1f。”、k、angle1 angle2);
标题(标题);
drawnow;
结束
5个评论
图像分析
2021年6月10日
@Sabrina Lounis
摆脱轴:
轴从
摆脱一个
具体的
矩形你需要删除它的处理:
hRect =矩形(…..........)
%删除该矩形
删除(hRect);
摆脱
所有
行轴,看到这个功能:
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%擦除所有行从当前轴。当前轴应首先使用轴设置()
%命令这个函数之前被调用,因为它从当前工作轴,gca。
函数ClearLinesFromAxes ()
试一试
%摆脱线的线()函数。
axesHandlesToChildObjects = findobj (gca),“类型”,“行”);
如果~ isempty (axesHandlesToChildObjects)
删除(axesHandlesToChildObjects);
结束
%摆脱线的参照线()或yline()函数。
axesHandlesToChildObjects = findobj (gca),“类型”,“ConstantLine”);
如果~ isempty (axesHandlesToChildObjects)
删除(axesHandlesToChildObjects);
结束
%摆脱线的矩形()函数。
axesHandlesToChildObjects = findobj (gca),“类型”,“矩形”);
如果~ isempty (axesHandlesToChildObjects)
删除(axesHandlesToChildObjects);
结束
抓我
%如果你这里发生了一些错误。
errorMessage = GetErrorMessage(我);%得到错误消息调用回溯和文件的日期。
uiwait (errordlg (errorMessage));%弹出错误消息显示用户它是什么。还打印命令窗口或控制台窗口(如果程序是一个可执行的)。
结束
返回;从ClearLinesFromAxes %