Android基于OpenCV實現(xiàn)圖像修復
圖像修復
實際應用中,圖像常常容易受損,如存在污漬的鏡頭、舊照片的劃痕、人為的涂畫(比如馬賽克),亦或是圖像本身的損壞。將受到損壞的圖像盡可能還原成原來的模樣的技術,稱之為圖像修復。所謂修復,就代表圖像大部分內容是完好的,所以,圖像修復的原理,就是用完好的部分去推斷受損部分的信息,特別是完好部分與受損部分的交界處,即受損區(qū)域的邊緣,在這個推斷過程中尤為重要。
OpenCV給我們提供了inpaint方法來實現(xiàn)這個功能,并提供了兩種圖像修復的算法:
- 基于Navier-Stokes的修復方法
- 基于圖像梯度的快速匹配方法又稱Telea法
API
參數(shù)一:src,輸入圖像,類型為8位,16位無符號或32位浮點單通道或8位三通道。
參數(shù)二:inpaintMask,修復掩碼,8位單通道圖像。非零像素表示需要修補的區(qū)域。
參數(shù)三:dst,輸出圖像,與src大小類型相同。
參數(shù)四:inpaintRadius,算法考慮的每個點的圓形鄰域的半徑。
參數(shù)五:flags,修復方法標志位。
public static final int
INPAINT_NS = 0, // 基于Navier-Stokes的方法
INPAINT_TELEA = 1, // 基于圖像梯度的快速匹配方法又稱Telea法
操作
/**
* 圖像修復
* author: yidong
* 2020/11/28
*/
class InPaintActivity : AppCompatActivity() {
private val mBinding: ActivityInPaintBinding by lazy {
ActivityInPaintBinding.inflate(layoutInflater)
}
private lateinit var mRgb: Mat
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(mBinding.root)
mRgb = Mat()
val bgr = Utils.loadResource(this, R.drawable.whiteprint)
Imgproc.cvtColor(bgr, mRgb, Imgproc.COLOR_BGR2RGB)
mBinding.ivLena.showMat(mRgb)
doInPaint()
}
private fun doInPaint() {
val gray = Mat()
val mask = Mat()
Imgproc.cvtColor(mRgb, gray, Imgproc.COLOR_RGB2GRAY)
Imgproc.threshold(gray, mask, 254.0, 255.0, Imgproc.THRESH_BINARY)
val kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, Size(20.0, 20.0))
Imgproc.dilate(mask, mask, kernel)
val dst = Mat()
Photo.inpaint(mRgb, mask, dst, 5.0, Photo.INPAINT_TELEA)
mBinding.ivResult.showMat(dst)
}
}
效果
原圖圖中右下角存在文字,通過圖像修復技術,實現(xiàn)去掉文字內容效果。類似操作可用于去掉水印。代碼中的參數(shù),根據(jù)實際需要進行調整。

源碼
以上就是Android基于OpenCV實現(xiàn)圖像修復的詳細內容,更多關于Android OpenCV圖像修復的資料請關注腳本之家其它相關文章!
相關文章
深入分析Android NFC技術 android nfc開發(fā)
本篇文章我們對android開發(fā)中nfc技術做了全面的原理分析以及實現(xiàn)過程,需要的讀者們一起參考一下吧。2017-11-11
Android的RV列表刷新詳解Payload與Diff方式異同
這篇文章主要為大家介紹了Android的RV列表刷新詳解Payload與Diff方式異同,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
Android編程實現(xiàn)popupwindow定時消失的方法
這篇文章主要介紹了Android編程實現(xiàn)popupwindow定時消失的方法,結合實例形式分析了Android使用定時器實現(xiàn)popupwindow定時消失的相關操作技巧,需要的朋友可以參考下2018-01-01
Android中ProgressDialog的dismiss()與cancel()方法的區(qū)別
本文主要介紹了Android中ProgressDialog的dismiss()與cancel()方法的區(qū)別,具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04

