MATLAB分析图像的某些部分

时间:2013-07-19 11:46:53

标签: image matlab image-processing

我对matlab很新,但接下来就是这种情况。我有一个海洋的卫星图像,有一些土地和一些船只。使用阈值制作二进制掩码和bwlabel我已经设法创建了一组与水上船只相匹配的标签。这是船只(和陆地)上标签的叠加图像,因此您可以看到我的意思:

enter image description here

从图像中可以看出,标签包括船只以及它们两侧的一些调光旁瓣。我需要找到一种方法来创建一组新的标签,只覆盖船只而不是旁瓣。我不能只使用更亮的门槛,因为我有很多不同亮度的船只的图像,其中一些比其他船只的旁瓣更暗。

所以我想我要问的是,有没有办法从这个图像中提取彩色部分,进一步分析它们(通过对各个部分进行阈值处理,或使用直方图或其他)来创建一组新的标签只有船只,但也保持这些新标签相对于原始图像的位置完整,所以我可以将它们重新叠加到原始图像上?如果是这样,怎么样?

谢谢!

2 个答案:

答案 0 :(得分:2)

这里有几个问题。

<强> 1。有没有办法从这张图片中提取彩色部分?

是。

让您从bwlabel获得的标签图片为L,原始图片为I。然后,S = regionprops(L,'BoundingBox');将为您提供与L中每个区域相关联的边界框。使用I2 = imcrop(I,S(2).BoundingBox);S(2)中提取区域。您必须检查S(2)是否与2中的标签L相对应(如果没有,则修复这是微不足道的。)

<强> 2。进一步分析它们(通过对各个段进行阈值处理,或使用直方图或其他)来创建一组仅包含船只的新标签。

不是那么简单。这在很大程度上取决于您的图像。您可以使用MATLAB的默认阈值函数来使其工作。假设您为每个裁剪的图像获取二进制掩码(例如IB1)。

第3。同时保持这些新标签相对于原始图像的位置不变,以便我可以将它们重新叠加到原始图像上吗?

是。由于您有一组边界框S,只需在L中替换新的蒙版。

L(round(S(1).BoundingBox(2):S(1).BoundingBox(2)+S(1).BoundingBox(4)),... round(S(1).BoundingBox(1):S(1).BoundingBox(1)+S(1).BoundingBox(3))) = IB1;

其中I1是改进的掩码。在分配给L时,不要忘记将掩码中的所有非零值设置为标签索引。

有关使用round的原因的更多信息,请look here

答案 1 :(得分:0)

您能否将旧图像乘以标记区域(或im_label~ = 0,因为它们将具有不同的标签值)以删除不相关的信息,然后使用背景后的“任何”方法再次处理图像被删除?