姓名:仝启龙 学号: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