嵌牛IT观察

常用的像素操作算法:图像加法、像素混合、提取图像中的ROI

2017-11-19  本文已影响0人  軒轅龍

姓名:仝启龙   学号:17101223413

本文转自

Java与Android技术栈

【嵌牛导读】

        图像可以是看成是一个多维的数组。读取一张图片,可以看成是读入了一系列的像素内容。这些像素内容,按照不同的模式具有不同的格式。对于三通道的 RGB 位图来说,每个像素是一个 8-bit 整数的三元组。图像的像素操作是比较基础的图像算法,下面列举三个常用的像素操作算法。

【嵌牛鼻子】图像加法,像素混合,提取图像中的ROI

【嵌牛提问】什么是图像加法?什么是像素混合?如何提取像素中的ROI?

【嵌牛正文】

图像加法

图像的加法表示两个输入图像在同一位置上的像素相加,得到一个输出图像的过程。

Operator的add表示矩阵加法,有一个要求两个图像必须大小一致。

在实际工作中,可以通过一张原图和一个mask图像来相加合成一些不规则的效果图片。

像素混合

在这里混合是线性混合,跟之前的图像加法有一定的区别。

Operator的addWeight方法表示像素混合

提取图像中的ROI

ROI(region of interest),表示图像中感兴趣的区域。对于一张图像,可能我们只对图像中某部分感兴趣,或者要对目标进行跟踪时,需要选取目标特征,所以要提取图像的感兴趣区域。

其中,rect.x和rect.y表示ROI的起始点,rect.width和rect.height表示ROI的宽和高。Operator的subImage()表示从原图中提取ROI,之所以在这里还用到了try catch,是为了防止出现ROI的宽度或者高度过大,从而导致数组越界。

subImage方法的代码也很简单

总结

cv4j (https://github.com/imageprocessor/cv4j)是gloomyfish (http://blog.csdn.net/jia20003)和我一起开发的图像处理库,纯java实现,目前还处于早期的版本。

像素操作是 cv4j 的基本功能之一,所有的像素操作算法都在Operator类中。除了本文介绍的三个算法之外,还有substract表示矩阵减法、multiple表示矩阵逐元素乘法、division表示矩阵逐元素除法以及bitwiseand、bitwisenot、bitwiseor、bitwisexor表示每个元素进行位运算分别是和、非、或、异或。

如果您想看该系列先前的文章可以访问下面的文集:http://www.jianshu.com/nb/10401400

上一篇下一篇

猜你喜欢

热点阅读