【人工智慧學習總結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】圖像的相似度衡量指標、二值化方法評估指標(一)2.
sklearn.metrics.f1_score - scikit-learn 0.19.1 documentation3.
Download4. 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-binarization
推薦閱讀:
※集智:負基礎就能學會的機器學習(一) 無需任何編程基礎
※分享一個好貨,你看看值不值得?
※TensorFlow 的常用模塊介紹
※數據科學、機器學習、人工智慧的區別到底是什麼?
※33歲 AI 新生代「教父」已崛起,或將成就人類歷史上邁向具有類人意識機器的一大步 | 獨家