主要内容

保边滤波后的分段热像图

这个例子展示了如何处理热图像,演示了一个简单的分割。热图像是由热像相机获得的,它可以探测电磁波谱红外范围内的辐射。热像图捕捉到绝对零度以上所有物体发出的红外辐射。

将热图像读入工作区并使用了解更多关于图像数据的信息。

我= imread (“hotcoffee.tif”);谁
名称大小字节类属性I 240x320 307200单

计算数据所占的动态范围,可以看到图像所占的温度范围。这个图像中的像素值对应的是摄氏刻度上的实际温度。

range = [min(I(:)) max(I(:))]
范围=1x2单行向量22.4729 - 77.3727

显示热图像。因为热图像是一个动态范围在0到1之外的单精度图像,所以必须使用imshow自动缩放功能显示图像。

figure imshow(I,[]) colormap(gca,hot) title(的“原始图像”)

Figure包含一个axes对象。带有标题的axes对象包含一个类型为image的对象。

对图像应用保边平滑,在保留图像细节的同时去除噪声。这是分割前的预处理步骤。使用imguidedfilter函数在自我引导下执行平滑。的DegreeOfSmoothingName-value参数控制平滑的数量,并依赖于图像的范围。调整DegreeOfSmoothing以适应热像图像的范围。显示过滤后的图像。

smoothValue = 0.01 * diff(范围)。^ 2;J = imguidedfilter(我“DegreeOfSmoothing”, smoothValue);figure imshow(J,[]) colormap(gca,hot) title(“引导过滤图像”)

Figure包含一个axes对象。标题为Guided filtered image的axes对象包含一个类型为image的对象。

确定阈值用于分割。图像有3个不同的区域-人,热的物体和背景-在强度(温度)上分离得很好。使用multithresh为图像计算2级阈值。这使用Otsu的方法将图像划分为3个区域。

打= multithresh (J, 2)
打=1x2单行向量27.0018 - 47.8220

使用返回的值来阈值图像multithresh。阈值为27摄氏度和48摄氏度。第一个阈值将背景强度与人分开,第二个阈值将人与热物体分开。对图像进行分割,并填充空洞。

L = imquantize (J,打);L = imfill (L);图imshow (label2rgb (L)标题(“来自3级大津的标签矩阵”)

Figure包含一个axes对象。带有标题标签矩阵的axes对象来自3级大津,包含一个类型为image的对象。

在图像的前景区域周围画一个边界框,并将该区域的平均温度值放入框中。该示例假设最大的区域是背景。使用regionprops函数获取关于分割图像中区域的信息。

道具= regionprops (L,我,“区域”“边界框(“大小)“MeanIntensity”“重心”]);%查找背景区域的索引。[~, idx] = max ([props.Area]);figure imshow(I,[]) colormap(gca,hot) title(“平均温度分割区域”)n = 1:元素个数(道具)%如果区域不是背景如果n ~ = idx%在区域周围绘制边框矩形(“位置”、道具(n)。BoundingBox,“EdgeColor”“c”)%绘制以摄氏度显示平均温度的文本T = num2str(道具(n) .MeanIntensity, 3) +“C \保监会”;文本(道具(n) .Centroid(1),道具(n) .Centroid (2), T,“颜色”“c”“字形大小”, 12)结束结束

Figure包含一个axes对象。带有标题的坐标轴对象包含图像、矩形、文本类型的5个对象。

另请参阅

|||

相关的话题

Baidu
map