日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码)

發(fā)布時(shí)間:2024/9/27 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

y(m,n)=x(m,n)+λ?z(m,n)y(m,n)=x(m,n)+λ?z(m,n)
其中x(m,n)x(m,n)是處理前圖片,y(m,n)y(m,n)是銳化后,z(m,n)z(m,n)代表增強(qiáng)圖像的邊緣和細(xì)節(jié)(高頻部分),λλ是增強(qiáng)因子,如下圖所示:

1.laplacian 增強(qiáng)

def laplacianSharpen(im, alpha):k = np.array([[0, 0, 0, ], [0, 1, 0], [0, 0, 0]])+alpha * \np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])# k = np.array([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]])dst = cv2.filter2D(im, -1, k)return dst

注:當(dāng)然λλ也可以不固定為1,原圖像加上λλ乘拉普拉斯銳化的結(jié)果,lambdalambda控制增強(qiáng)效果,如果覺得過于銳利,可以調(diào)小一點(diǎn)。

2.usm和改進(jìn)usm

usm(unsharp masking):將原圖像低通濾波后產(chǎn)生一個(gè)模糊圖像,原圖像與這模糊圖像相減得到保留高頻成份的圖像。再將高頻圖像用一個(gè)參數(shù)放大后與原圖像疊加,得到增強(qiáng)的圖像。

def usmSharpen(src,m,sigma,amount):blur_img = cv2.GaussianBlur(src, (m, m), sigma)dst = cv2.addWeighted(src, 1+amount, blur_img, -1*amount, 0)return dst

improved usm:
1.假設(shè)原圖為S,以半徑r計(jì)算高斯模糊圖G
2.value=S(i,j)-G(i,j)
3.銳化后的圖為D:

D(i,j)={S(i,j)+amount?value,S(i,j),abs(value)>thresholdotherwiseD(i,j)={S(i,j)+amount?value,abs(value)>thresholdS(i,j),otherwise

def improveUSM(src, m, sigma, threshold, amount):blur = cv2.GaussianBlur(src, (m, m), sigma)diff = src-blurmask = diff < thresholddst = cv2.addWeighted(src, 1+amount, blur, -1*amount, 0)res = src*mask+dst*(1-mask)return res

注:在使用改進(jìn)usm時(shí)發(fā)現(xiàn)出現(xiàn)黑點(diǎn)(尤其是參數(shù)高斯模糊半徑m變很大時(shí)),因?yàn)閷诎祬^(qū)域的增強(qiáng)帶來的感覺上更加明顯(韋伯定律),所以可以對value為負(fù)值時(shí)使用更小的增強(qiáng)因子。

def improveUSM2(src, m, sigma, threshold, amount):'''reduce black specles'''blur = cv2.GaussianBlur(src, (m, m), sigma)diff = src-blurmask = cv2.convertScaleAbs(diff) < thresholddst = np.zeros_like(src, dtype=np.int16)src = src.astype(np.int16)blur = blur.astype(np.int16)diff2 = src-blurmask2 = diff2 < 0neg = diff2*mask2pos = diff2*(1-mask2)dst = src+amount*pos+amount*0.5*negdst = dst.clip(0, 255)return dst2

另一種usm的優(yōu)化:
根據(jù)閾值比較結(jié)果,處理更平滑自然(主要是對mask做了模糊處理)

def improveUSM3(src, m, sigma, threshold, amount):blur = cv2.GaussianBlur(src, (m, m), sigma)diff = src-blurmask = diff < thresholddst = cv2.addWeighted(src, 1+amount, blur, -1*amount, 0)mask = mask.astype(np.int16)mask2 = cv2.GaussianBlur(mask, (m, m), sigma)res = src*mask2+dst*(1-mask2)return res

3.其他改進(jìn)

two drawbacks of USM:
1.noise amplification(噪聲也屬于高頻部分,所以增強(qiáng)細(xì)節(jié)同時(shí)會增強(qiáng)噪聲)
2.overshoot effect(見下圖)

改進(jìn)思路,無非是從λλ和z(m,n)z(m,n)兩個(gè)方面去優(yōu)化,下面幾篇論文,第一篇改進(jìn)usm的根據(jù)閾值截?cái)嗵幚?#xff0c;使用更平滑的處理方式,第二篇是從改變z(m,n)z(m,n)的計(jì)算上,使用非線性核(二次濾波器和多項(xiàng)式濾波器)。第三篇和第四篇是從優(yōu)化λλ上,使得增強(qiáng)因子和位置相關(guān),而非全局的一個(gè)常數(shù):

  • paper:An image sharpening algorithm based on fuzzy logic
  • paper:Nonlinear unsharp masking methods for image contrast enhancement
  • paper:rational unsharp masking technique
  • paper:Image Enhancement via Adaptive Unsharp Masking
  • 論文地址

    不過上述方法計(jì)算復(fù)雜,所以具體應(yīng)用時(shí)還應(yīng)取舍。

    桔桔桔桔桔桔桔桔桔桔

    總結(jié)

    以上是生活随笔為你收集整理的图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。