影像特徵

      在〈影像特徵〉中尚無留言

Erosion 影像侵蝕

底下代碼,可以將文字變成較細的圖片。請注意,背影色調為黑色,效果較佳。

import numpy as np
import cv2
import pylab as plt
img=cv2.imread('../word.jpg')
img=img[...,::-1].copy()
kernel = np.ones((5,5), np.uint8)
erosion = cv2.erode(img, kernel, iterations = 2)

plt.subplot(121),plt.imshow(img), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(erosion), plt.xticks([]), plt.yticks([])
plt.show()

上面的 iterations為迭代次數,次數愈大,則愈細

膨脹

底下則是會將文字變粗(膨帳)

import cv2
from MahalCv import MahalCv as cv
import pylab as plt
import numpy as np
img=cv.read("word.jpg")
img=img[:,:,::-1]
kernel=np.ones([5,5], dtype=np.uint8)
erosion=cv2.dilate(img, kernel=kernel, iterations=1)
plt.subplot(1,2,1);plt.imshow(img)
plt.subplot(1,2,2);plt.imshow(erosion)
plt.show()

角點偵測 Harris(哈里斯)

角點偵測有著極複雜的數學公式,在OpenCv只需使用cv2.cornerHarris()及cv2.dilate()及可取得

cv2.cornerHarris(src, blockSize, ksize, k, dst=None, borderType=None)
src:資料型別為 float32 的輸入影象
blockSize:角點檢測中考慮的區域大小
ksize:Sobel求導中使用的視窗大小, 3即為 3*3格
k:Harris 角點檢測方程中的自由引數,取值引數為 [0.04 0.06]
dst:輸出影象
borderType:邊界的型別

下面的代碼中,Harris_detector 為偵測到的角點資料,為一張黑底有白點的灰階圖片,再用dilate將白點放大成 dst 圖片。

import cv2
import numpy as np
import pylab as plt
filename = 'poly.jpg'
img = cv2.imread(filename)
#角點偵測需轉換成灰階及32位元float
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray_img = np.float32(gray_img)
Harris_detector = cv2.cornerHarris(gray_img, 2, 3, 0.01)
#膨脹harris結果
dst = cv2.dilate(Harris_detector, None)
# 設定閾值
thres = 0.01*dst.max()
img_harris=img[:,:,::-1].copy()
img_harris[dst > thres] = [255,0,0]
plt.subplot(121);plt.imshow(img);plt.title('Original')
plt.subplot(122);plt.imshow(img_harris);plt.title('Harris Corner')
plt.show()

Fast

Edward Rosten和Tom Drummond在2006年的論文 “用於高速拐角檢測的機器學習” 中提出了FAST(加速分段測試的特徵)算法。此法可以快速偵測出特徵點。Fast演算了最好以白底背影較為明顯。

import cv2
filename = 'poly.jpg'
img = cv2.imread(filename)
#fast = cv2.FastFeatureDetector_create(threshold=40,nonmaxSuppression=True,type=cv2.FAST_FEATURE_DETECTOR_TYPE_9_16)
fast = cv2.FastFeatureDetector_create()
kp = fast.detect(img,None)
img = cv2.drawKeypoints(img,kp,None,color=(255,0,0))
cv2.imshow('Fast',img)
cv2.imwrite('fast.jpg', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *