Android基于OpenCV实现图像脱色
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)
操作
/** * 脱色 * 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/…
以上就是Android基于OpenCV实现图像脱色的详细内容,更多关于Android OpenCV图像脱色的资料请关注趣讯吧其它相关文章!
推荐阅读
-
android(如何快速开发框架 小米note开发版MIUI,安卓6.0,怎么安装Xposed框架)
稳定版,你必须先根除。你上网搜索安卓可以叫别人s框架,对方可以把框架做成jar包,把这个jar包加载到项目目录的libs文件中使...
-
android(studio 虚拟机启动不了 android studio可以当模拟器用吗)
androidstudio可以当模拟器用吗?AmdCUP引导模拟器有点复杂。雷电模拟器上的抖音怎么登录不上?不是,闪电模拟调用...
-
从实践中学习手机抓包与数据分析(android 手机抓包app)
android手机抓包app?netcapture抓包精灵app(手机抓包工具)又名sslcapture,是什么专业的安卓手机抓...
-
android(studio全局搜索 android studio怎么看app界面)
androidstudio怎么看app界面?在设备桌面点击运用直接进入到App界面,就也可以参与其他你的操作了。android-...
-
怎么把android框架源代码拉到本地(android studio如何运行别人的源代码)
androidstudio如何运行别人的源代码?androidstudio点击刚建在列表中你选择导入module,导入即可在用...
-
android(studio2022年使用教程 怎么安装Android studio详细教程)
怎么安装Androidstudio详细教程?androidstudio中haxm直接安装的方法追加:1、简单的方法打开Andr...
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能