主要内容

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

此示例显示如何在GPU上执行图像处理操作。该示例使用过滤突出显示空中照片中的水域。

读取并显示图像。

imoriginal = imread('concordaerial.png');imshow(imoriginal)

通过创建一个将图像移动到GPUGPUArray.(并行计算工具箱)目的。

IMGPuoriginal = GPUARRAY(imoriginal);

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

IMGPUGRAY = RGB2GRAY(IMGPuoriginal);

查看图像图像查看器应用程序并检查像素值以查找水域的值。要使用图像查看器,必须通过使用映像数据将图像数据带回CPU上收集(并行计算工具箱)功能。在图像上移动鼠标时,您可以在图像查看器底部的光标下查看像素下的值。在图像中,水区域是暗的,并且具有小于70的像素值。

imtool(收集(imgpugray));

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

imwatergpu = imgpugray <70;

显示阈值的图像。与图像查看器不同imshow.功能支持金宝appGPUArray.输入。

图imshow(imwatergpu)

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

imwatermask = imopen(imwatergpu,strel('盘',5));imshow(imwatermask)

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

imgpuenhanced = im2single(imgpuoriginal);

从原始图像获取蓝色频道。

Bluechanneloriginal = Imgpuenhanced(::,3);

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

Bluechannelenhanced = Bluechanneliginal + 0.2 *单(Imwatermask);

增强型蓝色通道的最大值超过数据类型图像的最大值单身的。通过使用使用的预期范围[0,1]将数据重新归类到预期范围[0,1]rescale.功能。

Bluechannelenhanced = Rescale(Bluechannelenhanced);

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

imgpuenhanced(:,:,3)= bluechannelenhanced;

显示增强型图像。对应于水的像素在增强的图像中具有比原始图像更高的蓝色。

imshow(imgpuenhanced)标题('增强图像'

在GPU上过滤图像后,使用该图像将数据移动回CPU收集功能。将修改后的图像写入文件。

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

也可以看看

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

相关例子

更多关于