如何修复图像中的边缘

时间:2013-11-30 00:28:02

标签: matlab morphological-analysis

我得到了following图片中显示的结果。正如您所看到的,有些边缘并非都是笔直的。我希望这个图像类似于this一个(我不知道为什么会出现灰色阴影。也许是因为我手动提取了它?)。但是,这里的主要是与白边相似。我尝试使用形态学操作,但没有太大的改进。

如何解决此问题?

感谢。

1 个答案:

答案 0 :(得分: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”文件相同的噪声和边缘缺陷水平,但至少在视觉上,该图像中的损坏是更难看到边缘附近的灰度值。