Android基于OpenCV實(shí)現(xiàn)圖像脫色
Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)可以快速的實(shí)現(xiàn)圖片脫色,其通過(guò)簡(jiǎn)單的計(jì)算將三通道圖像轉(zhuǎn)換成單通道圖像,經(jīng)典的灰度轉(zhuǎn)換公式如下:
但是轉(zhuǎn)換過(guò)的圖像存在對(duì)比度丟失,無(wú)法區(qū)分顏色的問(wèn)題。OpenCV給我們提供另外一種脫色方法Photo.decolor,旨在最大限度的保留圖片對(duì)比度。
論文詳情:www.cse.cuhk.edu.hk/~leojia/pro…
論文PDF:www.computer.org/csdl/pds/ap…
相比于簡(jiǎn)單的使用R/G/B線性組合,作者構(gòu)造了更為復(fù)雜的多項(xiàng)式擬合,向量空間的基底為:[r,g,b,rg,rb,gb,r2,g2,b2],核心就是求取灰度化函數(shù):
public static void decolor(Mat src, Mat grayscale, Mat color_boost) 參數(shù)一:src,輸入8位三通道圖像。 參數(shù)二:grayscale,輸出8位單通道灰度圖。 參數(shù)三:color_boost,輸出8位三通道圖像。對(duì)比度增強(qiáng)后的圖像。操作
/** * 脫色 * 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 = mAdapterval 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 = trueGlobalScope.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實(shí)現(xiàn)的脫色效果圖,在對(duì)比度和顏色保留上效果相差很大。
github.com/onlyloveyd/…
以上就是Android基于OpenCV實(shí)現(xiàn)圖像脫色的詳細(xì)內(nèi)容,更多關(guān)于Android OpenCV圖像脫色的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP.NET MVC遍歷驗(yàn)證ModelState的錯(cuò)誤信息2. 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法3. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說(shuō)明4. jsp網(wǎng)頁(yè)實(shí)現(xiàn)貪吃蛇小游戲5. 用css截取字符的幾種方法詳解(css排版隱藏溢出文本)6. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向7. asp中response.write("中文")或者js中文亂碼問(wèn)題8. PHP設(shè)計(jì)模式中工廠模式深入詳解9. CSS hack用法案例詳解10. ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的過(guò)程(親測(cè)可用)
