【人工智慧學習總結3】圖像的相似度衡量指標、二值化方法評估指標(二)

Email:gong5264@mail.ustc.edu.cn

原創內容,轉載請標明

本人水平有限,如有錯誤還請批評指正

微博:宮帥USTC

參考的文獻在最後。


目錄:

一:二值化方法評估指標

均方誤差 MSE(mean squared error

峰值信噪比 PSNR (Peak Signal to Noise Ratio)

F指標 F-Measure (FM)

Negative Rate Metric (NRM)

二:其他可能會用到的一些code block

MAC上面有時報錯可能需要刪除 .DS_Store :

創建一個包含文件夾中所有圖像文件的文件名列表:

求PSNR

創建文件夾

查找特定文件

保存文件

大津法二值化

三:參考文獻



相關理論知識參考:

宮帥USTC:【人工智慧學習總結3】圖像的相似度衡量指標、二值化方法評估指標(一)以及相關參考文獻,在文末.

代碼中 代表換行

注意這裡的指標針對的是二值化任務。



1. 峰值信噪比 PSNR (Peak Signal to Noise Ratio):

(1)均方誤差 MSE(mean squared error ):

from sklearn.metrics import mean_squared_error#定義MSE,兩張圖片需要具有相同的維度def mse(imageA, imageB): err = mean_squared_error(imageA[:,:,2], imageB[:,:,2]) return err

(2)峰值信噪比 PSNR:

#定義PSNRdef psnr(imageA, imageB): MSE = mse(imageA, imageB) PSNR = 20*math.log10(255./MSE) return PSNR



2. F指標 F-Measure (FM):

(1)定義 TP, FP, FN, TN:

#定義 TP, FP, FN, TNdef tp (original, contrast): return np.sum(np.multiply((original==0).astype(int), (contrast==0).astype(int)))def fp (original, contrast): return np.sum(np.multiply((original==0).astype(int), (contrast!=0).astype(int)))def fn (original, contrast): return np.sum(np.multiply((original!=0).astype(int), (contrast==0).astype(int)))def tn (original, contrast): return np.sum(np.multiply((original!=0).astype(int), (contrast!=0).astype(int)))#TP = tp (original, contrast)#FP = fp (original, contrast)#FN = fn (original, contrast)#TN = tn (original, contrast)

(2)定義 Recall, Precision:

#定義 Recall, Precisiondef Recsll(TP, FN): recall = ((TP) / (TP + FN))*100 return recall def Precision(TP, FP): precision = ((TP) / (TP + FP))*100 return precision

(3)定義F1_measure:

#定義F1_measuredef F1measure(precision, recall): f1measure = 2*precision*recall / (precision+recall) return f1measure



3. Negative Rate Metric (NRM)

(1)定義 NRM:

#定義 NRMdef Nrm(TP, FP, FN, TN): nrm = 0.5*(FN / (FN+TP)+FP/(FP+TN)) return nrm



4. 其他可能會用到的一些code block

import numpy as npimport cv2import mathfrom matplotlib import pyplot as pltfrom PIL import Imagefrom pylab import *import osfrom sklearn.metrics import mean_squared_error%matplotlib inline

(1) MAC上面有時報錯可能需要刪除 .DS_Store :

!rm -fr ../testGT/.DS_Store

(2) 創建一個包含文件夾中所有圖像文件的文件名列表:

#分別是Ground Truth 和 二值化後的圖片文件夾path = "/Users/gongshuai/Desktop/ICFHR2016/Challenge1/TestBin"pathB = "/Users/gongshuai/Desktop/ICFHR2016/Challenge1/testGT"print(os.listdir(path)[:3])#創建一個包含文件夾中所有圖像文件的文件名列表(包含路徑)def get_imlist(path): return [os.path.join(path,f) for f in os.listdir(path)]imlist= get_imlist(path)imlistB = get_imlist(pathB)##創建一個包含文件夾中所有圖像文件的文件名列表(不包含路徑)imlist_name = os.listdir(path)imlistB_name = os.listdir(pathB)print(imlist[:2])print(imlistB[:2])print(imlist_name[:3])print(imlistB_name[:3])

(3) 求PSNR

PSNR = 0for b in range(len(imlist_name)): i = imlistB_name.index(imlist_name[b]) original = cv2.imread(imlist[b]) contrast = cv2.imread(imlistB[i]) PSNR += psnr(original, contrast) # print(PSNR)print(PSNR / 50.0)

(4)創建文件夾:

if os.path.exists(output_dir): shutil.rmtree(output_dir) os.makedirs(output_dir)

if not os.path.exists(out_folder): os.makedirs(out_folder)else: print("WARNING: path exists - ", out_folder)

(5)查找特定文件:

mage_paths = glob(os.path.join(data_folder, image_2, *.png))

(6)保存文件:

misc.imsave(os.path.join(save_dir, name + ".png"), image)

(7)大津法二值化:

path = "/Users/gongshuai/Desktop/ICFHR2016/Challenge1/Test"#創建一個包含文件夾中所有圖像文件的文件名列表def get_imlist(path): return [os.path.join(path,f) for f in os.listdir(path)]imlist = get_imlist(path)

#讀取每張圖片,並且使用大津法處理for infile in imlist : #print(infile) image = cv2.imread(infile) image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ret2, th2 = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # print(th2) plt.imshow(th2, "gray") plt.show() outfile = os.path.splitext(infile)[0] + "B.jpg" # print(outfile) cv2.imwrite(outfile, th2)



三:參考文獻

1.

宮帥USTC:【人工智慧學習總結3】圖像的相似度衡量指標、二值化方法評估指標(一)zhuanlan.zhihu.com圖標

2.

sklearn.metrics.f1_score - scikit-learn 0.19.1 documentationscikit-learn.org圖標

3.

Downloadamadi.univ-lr.fr圖標

4. Burie, Jean-Christophe, et al. "ICFHR2016 Competition on the Analysis of Handwritten Text in Images of Balinese Palm Leaf Manuscripts." Frontiers in Handwriting Recognition (ICFHR), 2016 15th International Conference on. IEEE, 2016.

5.

motatoes/image-binarizationgithub.com圖標
推薦閱讀:

集智:負基礎就能學會的機器學習(一) 無需任何編程基礎
分享一個好貨,你看看值不值得?
TensorFlow 的常用模塊介紹
數據科學、機器學習、人工智慧的區別到底是什麼?
33歲 AI 新生代「教父」已崛起,或將成就人類歷史上邁向具有類人意識機器的一大步 | 獨家

TAG:計算機視覺 | 人工智慧 | 二值化演算法 |