主要内容

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

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

读取和显示一个图像。

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

GPU通过创建一个移动图像gpuArray(并行计算工具箱)对象。

imGPUoriginal = gpuArray (imOriginal);

作为一个预处理步骤,改变RGB图像为灰度图像。rgb2grayGPU执行转换操作,因为输入参数是一个gpuArray

imGPUgray = rgb2gray (imGPUoriginal);

视图的形象图像查看器应用程序和检查像素值找到水领域的价值。使用图像查看器,您必须将图像数据到CPU使用收集(并行计算工具箱)函数。当你移动鼠标图片,您可以查看光标下的像素的价值底部的图像查看器。形象,地区的水是黑暗和像素值小于70。

imtool(收集(imGPUgray));

得到一个新的图像仅包含的像素值小于70,阈值图像在GPU上。

imWaterGPU = imGPUgray < 70;

显示阈值图像。与图像查看器不同,imshow功能支持万博1manbetxgpuArray输入。

图imshow (imWaterGPU)

删除小物体的图像,同时保留更大的物体的形状和大小通过形态。的imopen函数执行形态和支持万博1manbetxgpuArray输入。

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

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

imGPUenhanced = im2single (imGPUoriginal);

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

blueChannelOriginal = imGPUenhanced (:: 3);

提高饱和的蓝色通道通过增加强度的蓝色通道像素面具在哪里1(真正的)。

blueChannelEnhanced = blueChannelOriginal + 0.2 *单(imWaterMask);

增强的蓝色通道的最大价值超过最大值的期望的图像数据类型。重新调节数据预期区间[0,1]使用重新调节函数。

blueChannelEnhanced =重新调节(blueChannelEnhanced);

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

imGPUenhanced (:,:, 3) = blueChannelEnhanced;

显示增强的图像。像素对应于水更饱和的蓝色比原始图像增强的图像。

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

滤波后的图像在GPU,将数据移动到CPU使用收集函数。写修改后的图像文件。

outCPU =收集(imGPUenhanced);imwrite (outCPU“concordwater.png”)

另请参阅

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

相关的例子

更多关于