我得到的结果如下图像所示。正如您所看到的,有些边缘并不都是直的。我希望这张图像与this类似(我不确定为什么会出现灰色阴影。也许是因为我手动提取了它?)。但是,这里最主要的是与白边相似。我尝试使用形态学运算,但没有太大改进。
有什么想法可以解决这个问题吗?
谢谢。
我将您的数据加载到名为“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”文件相同的潜在噪声和边缘缺陷水平,但至少在视觉上,该图像中的损坏更难发现请参阅边缘周围的灰度值。