Android OpenCV图像脱色 Android基于OpenCV实现图像脱色

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Android OpenCV图像脱色 Android基于OpenCV实现图像脱色

易冬   2021-06-19 我要评论
想了解Android基于OpenCV实现图像脱色的相关内容吗,易冬在本文为您仔细讲解Android OpenCV图像脱色的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android,OpenCV,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实现的脱色效果图,在对比度和颜色保留上效果相差很大。

源码

github.com/onlyloveyd/…

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们