小编Dor*_*ski的帖子

如果区域已经填满,则禁止修补

这对我的代码来说是一个非常艰巨的挑战.首先,我放在这里的代码不可运行,因为我使用的是Excel工作表(但如果有人想尝试使用我的代码,我很乐意通过电子邮件发送).

我所拥有的是Excel表格,其中包含我拍摄的显微图像中的横截面光纤数据.这些信息基本上是:location部分的,area,angle旋转.

从那里我计算出方向角Phi和Gamma.之后,我使用散射函数为每个Phi角度值绘制不同颜色的点.我使用恒定的颜色10度范围.这给了我一张这样的照片:

在此输入图像描述

现在我的目标是计算每个同质区域的面积.因此,我想方设法绘制让我们说-10 +10区域内的所有点(我现在做20度,但之后会做10度).我用了一下,得到了这样一张照片:

在此输入图像描述

白色对应于点在我选择的范围内的位置.之后,我使用MATLAB中的工具箱将每个点转换为一个像素.因此,我会得到一个带有大量白色像素的黑色背景,然后我imdilate用来制作圆圈,填充孔并用特定颜色隔离每个区域.最后,我使用函数边界和补丁,创建每个边界并用颜色填充它们.我得到一张这样的照片:

在此输入图像描述

这就是我想要的,我可以得到每个区域的面积和总面积(我使用了一个阈值来丢弃小区域).然后我为每个区域运行代码几次,然后我用imfuse它们将它们放回原处并查看它的外观.

问题是,它们重叠很多,这是因为我的数据中存在一些错误,因此一些蓝点会出现红色,依此类推.所以我想运行一次代码,然后当我用另一个范围重新运行它时,它会做同样的事情,但是在之前已经绘制过的东西时没有考虑到值.

我尝试这样做,在运行一次之后,保存矩阵bw4并在绘制黑白图片时添加条件,说明Phi是否在我的范围内并且此处没有白色然后你可以放白色,否则它是黑色的.但它似乎没有用.

我理解这是一个非常复杂的解释,但我会感激任何想法,并通过电子邮件或其他方式开放聊天.我现在正在提供完整的代码,如果您想在计算机上运行并亲自查看,我可以将Excel表格发送给您.

clearvars -except data colheaders bw4
close all
clc
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% CHANGE DATA FOR EACH SAMPLE %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

cd 'C:\Users\dkarta\Desktop\Sample 12\12.6'
data=xlsread('Sample12_6res.xlsx');

cd 'C:\Users\dkarta\Documents\MATLAB'

%data=Sample121res; % Data name
imax=length(data); % Numbers of rows in data sheet
y=11900; % Number of pixels in the y on image j
%%

data(:,15)=data(:,9)*pi/180; % Convers Column 9 (angle of rotation) in rads
data(:,16)=y-data(:,6); % …
Run Code Online (Sandbox Code Playgroud)

excel matlab patch image-processing boundary

12
推荐指数
1
解决办法
202
查看次数

标签 统计

boundary ×1

excel ×1

image-processing ×1

matlab ×1

patch ×1