主要内容

在GPU上执行阈值和形态操作

这个例子展示了如何在GPU上执行图像处理操作。这个例子使用过滤来突出航空照片中有水的区域。

读取并显示图像。

imOriginal = imread (“concordaerial.png”);imshow (imOriginal)

通过创建图形处理器将图像移动到GPUgpuArray(并行计算工具箱)目的。

imGPUoriginal = gpuArray (imOriginal);

作为预处理步骤,将RGB图像转换为灰度图像。RGB2GRAY.在GPU上执行转换操作,因为输入参数是gpuArray

imGPUgray = rgb2gray (imGPUoriginal);

查看图片图像查看器应用程序并检查像素值,找到水域的值。要使用图像查看器,您必须通过使用收集(并行计算工具箱)函数。当您将鼠标移动到图像上时,您可以在图像查看器的底部查看光标下的像素值。在图像中,水的区域是黑色的,像素值小于70。

imtool(收集(imGPUgray));

要获得仅包含少于70的像素的新图像,在GPU上阈值阈值。

imWaterGPU = imGPUgray < 70;

显示阈值图像。不像图像查看器,imshow功能支持金宝appgpuArray输入。

图imshow (imWaterGPU)

通过使用形态开口保留较大物体的形状和大小,从图像中删除小对象。这imopen功能执行形态开放和支持金宝appgpuArray输入。

imWaterMask = imopen (imWaterGPU strel (“磁盘”5));imshow (imWaterMask)

创建包含增强数据的原始图像的副本。将数据类型转换为

imGPUenhanced = im2single (imGPUoriginal);

从原始图像中得到蓝色通道。

blueChannelOriginal = imGPUenhanced (:: 3);

通过增加蓝色通道的强度来提高蓝色通道的饱和度,以便掩模是掩模的像素1真正的).

blueChannelEnhanced = blueChannelOriginal + 0.2*single(imWaterMask);

增强后的蓝色通道的最大值超过了数据类型图像的最大值.属性将数据重新缩放到预期范围[0,1]重新调节函数。

blueChannelEnhanced =重新调节(blueChannelEnhanced);

用增强的蓝色通道替换蓝色通道。

imGPUenhanced (:,:, 3) = blueChannelEnhanced;

显示增强后的图像。与原始图像相比,增强后的图像中与水对应的像素具有更饱和的蓝色。

imshow (imGPUenhanced)标题(“增强的图像”

在GPU上对图像进行过滤后,将数据移回CPU收集函数。将修改后的映像写入文件。

OutCPU =聚集(IMGPuenhanced);IMWRITE(OUTCPU,“concordwater.png”

另请参阅

(并行计算工具箱)|(并行计算工具箱)

相关的例子

更多关于