在GPU执行阈值和形态学操作
这个例子展示了如何对GPU执行图像处理操作。突出的例子使用过滤水地区航空照片。
读取和显示一个图像。
imOriginal = imread (“concordaerial.png”);imshow (imOriginal)
GPU通过创建一个移动图像gpuArray
(并行计算工具箱)对象。
imGPUoriginal = gpuArray (imOriginal);
作为一个预处理步骤,改变RGB图像为灰度图像。rgb2gray
GPU执行转换操作,因为输入参数是一个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”)
另请参阅
相关的例子
更多关于
- 运行在GPU MATLAB函数(并行计算工具箱)
- 函数支持GPU计算万博1manbetx