3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
fanfuhan OpenCV 教學035 ~ opencv-035-USM-圖像銳化增强演算法 ~ 邊緣檢測/失焦(對焦失敗) 的前置動作 資料來源: https://fanfuhan.github.io/ https://fanfuhan.github.io/2019/04/10/opencv-035/ GITHUB:https://github.com/jash-git/fanfuhan_ML_OpenCV 知識點:     圖像卷積處理實現銳化有一種常用的算法叫做Unsharpen Mask方法,這種銳化的方法就是對原圖像先做一個高斯模糊,然後用原來的圖像減去一個係數乘以高斯模糊之後的圖像,然後再把值Scale到0~255的RGB像素值範圍之內。基於USM銳化的方法可以去除一些細小的干擾細節和噪聲,比一般直接使用卷積銳化算子得到的圖像銳化結果更加真實可信。 USM銳化公式表示如下:     (源圖像– w*高斯模糊)/(1-w);其中w表示權重(0.1~0.9),默認為0.6 OpenCV中的代碼實現步驟      – 高斯模糊      – 權重疊加      – 輸出結果   C++ #include #include using namespace std; using namespace cv; int main() { Mat src = imread("../images/test.png"); if (src.empty()) { cout << "could not load image.." << endl; } imshow("input", src); Mat blur_img, usm; GaussianBlur(src, blur_img, Size(0,0), 25); addWeighted(src, 1.5, blur_img, -0.5, 0, usm); imshow("usm", usm); waitKey(0); return 0; } Python import cv2 as cv import numpy as np src = cv.imread("D:/images/master.jpg") cv.namedWindow("input", cv.WINDOW_AUTOSIZE) cv.imshow("input", src) # sigma = 5、15、25 blur_img = cv.GaussianBlur(src, (0, 0), 5) usm = cv.addWeighted(src, 1.5, blur_img, -0.5, 0) cv.imshow("mask image", usm) h, w = src.shape[:2] result = np.zeros([h, w*2, 3], dtype=src.dtype) result[0:h,0:w,:] = src result[0:h,w:2*w,:] = usm cv.putText(result, "original image", (10, 30), cv.FONT_ITALIC, 1.0, (0, 0, 255), 2) cv.putText(result, "sharpen image", (w+10, 30), cv.FONT_ITALIC, 1.0, (0, 0, 255), 2) cv.imshow("sharpen_image", result) cv.imwrite("D:/result.png", result) cv.waitKey(0) cv.destroyAllWindows()

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦