Android基于OpenCV实现图像脱色
脱色
Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)可以快速的实现图片脱色,其通过简单的计算将三通道图像转换成单通道图像,经典的灰度转换公式如下:

但是转换过的图像存在对比度丢失,无法区分颜色的问题。OpenCV给我们提供另外一种脱色方法Photo.decolor,旨在最大限度的保留图片对比度。

原理
论文详情:www.cse.cuhk.edu.hk/~leojia/pro…
论文PDF:www.computer.org/csdl/pds/ap…
相比于简单的使用R/G/B线性组合,作者构造了更为复杂的多项式拟合,向量空间的基底为:[r,g,b,rg,rb,gb,r2,g2,b2],核心就是求取灰度化函数:

API
public static void decolor(Mat src, Mat grayscale, Mat color_boost)
- 参数一:src,输入8位三通道图像。
- 参数二:grayscale,输出8位单通道灰度图。
- 参数三:color_boost,输出8位三通道图像。对比度增强后的图像。
操作
/**
* 脱色
* author: yidong
* 2020/12/5
*/
class DecolorActivity : AppCompatActivity() {
private val mBinding: ActivityDecolorBinding by lazy {
ActivityDecolorBinding.inflate(layoutInflater)
}
private val mList = mutableListOf<ImageTextObject>()
private lateinit var mAdapter: ImageTextAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(mBinding.root)
mAdapter = ImageTextAdapter(this, mList)
mBinding.container.adapter = mAdapter
val bgr = Utils.loadResource(this, R.drawable.ceil)
val rgb = Mat()
Imgproc.cvtColor(bgr, rgb, Imgproc.COLOR_BGR2RGB)
val gray = Mat()
val dst = Mat()
val boost = Mat()
mBinding.isLoading = true
GlobalScope.launch(Dispatchers.IO) {
Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)
Photo.decolor(rgb, dst, boost)
launch(Dispatchers.Main) {
mList.add(ImageTextObject(rgb, "原图"))
mList.add(ImageTextObject(gray, "RGB2GRAY"))
mList.add(ImageTextObject(dst, "DeColor"))
mList.add(ImageTextObject(boost, "ColorBoosting"))
mAdapter.notifyItemRangeInserted(0, 4)
mBinding.isLoading = false
}
}
}
}
效果
分别采用decolor和RGB2GRAY实现的脱色效果图,在对比度和颜色保留上效果相差很大。

源码
以上就是Android基于OpenCV实现图像脱色的详细内容,更多关于Android OpenCV图像脱色的资料请关注脚本之家其它相关文章!
相关文章
Android Build Variants 为项目设置变种版本的方法
下面小编就为大家分享一篇Android Build Variants 为项目设置变种版本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-01-01
Android开发使用自定义View将圆角矩形绘制在Canvas上的方法
这篇文章主要介绍了Android开发使用自定义View将圆角矩形绘制在Canvas上的方法,结合实例形式分析了Android自定义view绘制圆角矩形的相关方法与使用技巧,需要的朋友可以参考下2017-10-10
Android studio将Module打包成Jar的方法
这篇文章主要介绍了Android studio将Module打包成Jar的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-10-10
Android自定义FloatingActionButton滑动行为只隐藏不出现的问题小结
这篇文章主要介绍了Android自定义FloatingActionButton滑动行为只隐藏不出现的问题小结,需要的朋友可以参考下2017-01-01


最新评论