Android基于OpenCV實(shí)現(xiàn)圖像修復(fù)
實(shí)際應(yīng)用中,圖像常常容易受損,如存在污漬的鏡頭、舊照片的劃痕、人為的涂畫(huà)(比如馬賽克),亦或是圖像本身的損壞。將受到損壞的圖像盡可能還原成原來(lái)的模樣的技術(shù),稱(chēng)之為圖像修復(fù)。所謂修復(fù),就代表圖像大部分內(nèi)容是完好的,所以,圖像修復(fù)的原理,就是用完好的部分去推斷受損部分的信息,特別是完好部分與受損部分的交界處,即受損區(qū)域的邊緣,在這個(gè)推斷過(guò)程中尤為重要。
OpenCV給我們提供了inpaint方法來(lái)實(shí)現(xiàn)這個(gè)功能,并提供了兩種圖像修復(fù)的算法:
基于Navier-Stokes的修復(fù)方法 基于圖像梯度的快速匹配方法又稱(chēng)Telea法 API參數(shù)一:src,輸入圖像,類(lèi)型為8位,16位無(wú)符號(hào)或32位浮點(diǎn)單通道或8位三通道。參數(shù)二:inpaintMask,修復(fù)掩碼,8位單通道圖像。非零像素表示需要修補(bǔ)的區(qū)域。參數(shù)三:dst,輸出圖像,與src大小類(lèi)型相同。參數(shù)四:inpaintRadius,算法考慮的每個(gè)點(diǎn)的圓形鄰域的半徑。參數(shù)五:flags,修復(fù)方法標(biāo)志位。
public static final intINPAINT_NS = 0, // 基于Navier-Stokes的方法INPAINT_TELEA = 1, // 基于圖像梯度的快速匹配方法又稱(chēng)Telea法操作
/** * 圖像修復(fù) * 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) }}效果
原圖圖中右下角存在文字,通過(guò)圖像修復(fù)技術(shù),實(shí)現(xiàn)去掉文字內(nèi)容效果。類(lèi)似操作可用于去掉水印。代碼中的參數(shù),根據(jù)實(shí)際需要進(jìn)行調(diào)整。
github.com/onlyloveyd/…
以上就是Android基于OpenCV實(shí)現(xiàn)圖像修復(fù)的詳細(xì)內(nèi)容,更多關(guān)于Android OpenCV圖像修復(fù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. XML入門(mén)精解之結(jié)構(gòu)與語(yǔ)法2. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera3. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)4. 利用CSS3新特性創(chuàng)建透明邊框三角5. XML入門(mén)的常見(jiàn)問(wèn)題(一)6. HTML5 Canvas繪制圖形從入門(mén)到精通7. 概述IE和SQL2k開(kāi)發(fā)一個(gè)XML聊天程序8. HTML <!DOCTYPE> 標(biāo)簽9. HTML DOM setInterval和clearInterval方法案例詳解10. XML入門(mén)的常見(jiàn)問(wèn)題(二)
