如何修复图像中的边缘

问题描述 投票:0回答:1

我得到的结果如图像所示。正如您所看到的,有些边缘并不都是直的。我希望这张图像与this类似(我不确定为什么会出现灰色阴影。也许是因为我手动提取了它?)。但是,这里最主要的是与白边相似。我尝试使用形态学运算,但没有太大改进。

有什么想法可以解决这个问题吗?

谢谢。

matlab image-processing mathematical-morphology
1个回答
3
投票

我将您的数据加载到名为“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(:));

现在看一下网格视图,我们发现,正如预期的那样,边缘周围存在明显的噪声和损坏:

enter image description here

边缘的出现表明尝试对数据进行阈值操作。 我尝试了阈值,发现 0.13 产生了一些改进:

data2 = double(data1 > 0.13);

给出:

enter image description here

或灰度图,imshow(data2):

enter image description here

我不知道这是否适合您的应用程序,边缘并不完美,但它似乎比您开始时有所改进。

顺便说一句,我也检查了您的“已解决”数据,它似乎也具有与“toBeSolved”文件相同的潜在噪声和边缘缺陷水平,但至少在视觉上,该图像中的损坏更难发现请参阅边缘周围的灰度值。

© www.soinside.com 2019 - 2024. All rights reserved.