我得到了如下图所示的结果。如您所见,有些边缘并非都是笔直的。我希望这张图片与这张相似(我不确定为什么会出现灰色阴影。也许是因为我手动提取了它?)。但是,这里的主要内容是类似于白色边缘。我尝试使用形态学运算,但没有太大改进。
任何想法如何解决这个问题?
谢谢。
我将您的数据加载到一个名为“toBeSolved”的变量中。
rawData1 = importdata('to be solved.JPG');
[~,name] = fileparts('to be solved.JPG');
newData1.(genvarname(name)) = rawData1;
% Create new variables in the base workspace from those fields.
vars = fieldnames(newData1);
for i = 1:length(vars)
assignin('base', vars{i}, newData1.(vars{i}));
end
现在这是一个索引图像,因此有 3 帧,如下所示:
>> size(toBeSolved)
ans =
452 440 3
每一帧的数据内容看起来都是一样的,所以也许你关心的只是1帧的灰度信息?如果是这样的话,让我们只取第一帧:
data1 = im2double(toBeSolved(:,:,1));
然后将数据归一化为图像中的最大值:
data1 = data1 / max(data1(:));
现在看一下网格视图,我们看到,正如预期的那样,边缘周围存在明显的噪声和损坏:
边缘的外观表明尝试对数据进行阈值操作。我对阈值进行了实验,发现 0.13 产生了一些改进:
data2 = double(data1 > 0.13);
这使:
或灰度,imshow(data2):
我不知道这对您的应用程序是否可以接受,边缘并不完美,但它似乎比您开始时有所改进。
顺便说一句,我还检查了您的“已解决”数据,这些数据似乎也具有与“toBeSolved”文件相同的潜在噪声水平和边缘缺陷,但至少在视觉上,该图像中的损坏更难看到由于边缘周围的灰度值。