diff --git a/README.md b/README.md index 852d6e6..58c17c4 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,13 @@ - https://github.com/eastmountyxz/Book3-Python-ImageProcessing + +华为云《从零到壹•Python图像处理及识别》电子书开源: +- https://bbs.huaweicloud.com/blogs/336932 +- https://github.com/eastmountyxz/HWCloudImageRecognition + + + **图像处理:** [[Python图像处理] 一.图像处理基础知识及OpenCV入门函数](https://blog.csdn.net/Eastmount/article/details/81748802)
diff --git a/blog28-CNN-LSTM-GPU/data_preprocess.py b/blog28-CNN-LSTM-GPU/data_preprocess.py deleted file mode 100644 index 90ebb80..0000000 --- a/blog28-CNN-LSTM-GPU/data_preprocess.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding:utf-8 -*- -# By:Eastmount CSDN 2021-03-19 -import csv -import pandas as pd -import numpy as np -import jieba -import jieba.analyse - -#添加自定义词典和停用词典 -jieba.load_userdict("user_dict.txt") -stop_list = pd.read_csv('stop_words.txt', - engine='python', - encoding='utf-8', - delimiter="\n", - names=['t'])['t'].tolist() - -#----------------------------------------------------------------------- -#Jieba分词函数 -def txt_cut(juzi): - return [w for w in jieba.lcut(juzi) if w not in stop_list] - -#----------------------------------------------------------------------- -#中文分词读取文件 -def fenci(filename,result): - #写入分词结果 - fw = open(result, "w", newline = '',encoding = 'UTF-8') - writer = csv.writer(fw) - writer.writerow(['label','cutword']) - - #使用csv.DictReader读取文件中的信息 - labels = [] - contents = [] - with open(filename, "r", encoding="UTF-8") as f: - reader = csv.DictReader(f) - for row in reader: - #数据元素获取 - labels.append(row['label']) - content = row['content'] - #中文分词 - seglist = txt_cut(content) - #空格拼接 - output = ' '.join(list(seglist)) - contents.append(output) - - #文件写入 - tlist = [] - tlist.append(row['label']) - tlist.append(output) - writer.writerow(tlist) - print(labels[:5]) - print(contents[:5]) - fw.close() - -#----------------------------------------------------------------------- -#主函数 -if __name__ == '__main__': - fenci("news_dataset_train.csv", "news_dataset_train_fc.csv") - fenci("news_dataset_test.csv", "news_dataset_test_fc.csv") - fenci("news_dataset_val.csv", "news_dataset_val_fc.csv") diff --git a/blog28-CNN-LSTM-GPU/data_show.py b/blog28-CNN-LSTM-GPU/data_show.py deleted file mode 100644 index bf8b5a0..0000000 --- a/blog28-CNN-LSTM-GPU/data_show.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on 2021-03-19 -@author: xiuzhang Eastmount CSDN -""" -import pandas as pd -import numpy as np -from sklearn import metrics -import matplotlib.pyplot as plt -import seaborn as sns - -#---------------------------------------第一步 数据读取------------------------------------ -## 读取测数据集 -train_df = pd.read_csv("news_dataset_train_fc.csv") -val_df = pd.read_csv("news_dataset_val_fc.csv") -test_df = pd.read_csv("news_dataset_test_fc.csv") -print(train_df.head()) - -## 解决中文显示问题 -plt.rcParams['font.sans-serif'] = ['KaiTi'] #指定默认字体 SimHei黑体 -plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号' - -## 查看训练集都有哪些标签 -plt.figure() -sns.countplot(train_df.label) -plt.xlabel('Label',size = 10) -plt.xticks(size = 10) -plt.show() - -## 分析训练集中词组数量的分布 -print(train_df.cutwordnum.describe()) -plt.figure() -plt.hist(train_df.cutwordnum,bins=100) -plt.xlabel("词组长度", size = 12) -plt.ylabel("频数", size = 12) -plt.title("训练数据集") -plt.show() - - diff --git "a/blog51-SuiAnalysis/add_dataset-01 (\345\207\240\344\275\225-break).py" "b/blog51-SuiAnalysis/add_dataset-01 (\345\207\240\344\275\225-break).py" new file mode 100644 index 0000000..afe6f11 --- /dev/null +++ "b/blog51-SuiAnalysis/add_dataset-01 (\345\207\240\344\275\225-break).py" @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +""" +2022-12-24 +By: Eastmount CSDN xiuzhang +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt + +#----------------------------------------------------------------------- +#几何变换-镜像、翻转、旋转、缩放 +def JH_Transformation(img,img_path): + rows, cols, channel = img.shape + #print(rows,cols,channel) + + #镜像处理 + jx = cv2.flip(img, 1) + + #旋转30度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1) + rotated30 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转45度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) + rotated45 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转90度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 90, 1) + rotated90 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转330度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 330, 1) + rotated330 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转180度 + M = cv2.getRotationMatrix2D((cols/2, rows/2), 180, 1) + rotated180 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #缩小 + sx = cv2.resize(img, (int(cols*0.8), int(rows*0.8))) + + #放大 + fd = cv2.resize(img, (int(cols*1.2), int(rows*1.2))) + + #显示图像 + titles = ['Source', 'JX', 'XZ30', 'XZ45', 'XZ90', 'XZ330', 'XZ180', 'SX', 'FD'] + images = [img, jx, rotated30, rotated45, rotated90, rotated330, rotated180, sx, fd] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_jx.png', jx) + cv2.imwrite(img_path[0:-4] + '_rotated30.png', rotated30) + cv2.imwrite(img_path[0:-4] + '_rotated45.png', rotated45) + cv2.imwrite(img_path[0:-4] + '_rotated90.png', rotated90) + cv2.imwrite(img_path[0:-4] + '_rotated330.png', rotated330) + cv2.imwrite(img_path[0:-4] + '_rotated180.png', rotated180) + cv2.imwrite(img_path[0:-4] + '_sx.png', sx) + cv2.imwrite(img_path[0:-4] + '_fd.png', fd) + +#----------------------------------------------------------------------- +#读取指定文件夹下的所有图像 +def main(): + file_path = "data" + for img_name in os.listdir(file_path): + img_path = file_path + "\\" + img_name + img = cv2.imread(img_path) + + #1.几何变换-镜像、翻转、旋转、缩放 + JH_Transformation(img,img_path) + + break + +if __name__ == "__main__": + main() + diff --git "a/blog51-SuiAnalysis/add_dataset-02 (\345\207\240\344\275\225\343\200\201\344\272\256\345\272\246\343\200\201\351\200\232\351\201\223-break).py" "b/blog51-SuiAnalysis/add_dataset-02 (\345\207\240\344\275\225\343\200\201\344\272\256\345\272\246\343\200\201\351\200\232\351\201\223-break).py" new file mode 100644 index 0000000..3fdd69c --- /dev/null +++ "b/blog51-SuiAnalysis/add_dataset-02 (\345\207\240\344\275\225\343\200\201\344\272\256\345\272\246\343\200\201\351\200\232\351\201\223-break).py" @@ -0,0 +1,219 @@ +# -*- coding: utf-8 -*- +""" +2022-12-24 +By: Eastmount CSDN xiuzhang +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt + +#----------------------------------------------------------------------- +#几何变换-镜像、翻转、旋转、缩放 +def JH_Transformation(img,img_path): + rows, cols, channel = img.shape + #print(rows,cols,channel) + + #镜像处理 + jx = cv2.flip(img, 1) + + #旋转30度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1) + rotated30 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转45度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) + rotated45 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转90度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 90, 1) + rotated90 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转330度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 330, 1) + rotated330 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转180度 + M = cv2.getRotationMatrix2D((cols/2, rows/2), 180, 1) + rotated180 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #缩小 + sx = cv2.resize(img, (int(cols*0.8), int(rows*0.8))) + + #放大 + fd = cv2.resize(img, (int(cols*1.2), int(rows*1.2))) + + #显示图像 + titles = ['Source', 'JX', 'XZ30', 'XZ45', 'XZ90', 'XZ330', 'XZ180', 'SX', 'FD'] + images = [img, jx, rotated30, rotated45, rotated90, rotated330, rotated180, sx, fd] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_jx.png', jx) + cv2.imwrite(img_path[0:-4] + '_rotated30.png', rotated30) + cv2.imwrite(img_path[0:-4] + '_rotated45.png', rotated45) + cv2.imwrite(img_path[0:-4] + '_rotated90.png', rotated90) + cv2.imwrite(img_path[0:-4] + '_rotated330.png', rotated330) + cv2.imwrite(img_path[0:-4] + '_rotated180.png', rotated180) + cv2.imwrite(img_path[0:-4] + '_sx.png', sx) + cv2.imwrite(img_path[0:-4] + '_fd.png', fd) + +#----------------------------------------------------------------------- +def Brighter_Transformation(img, percetage): + img_copy = img.copy() + w = img.shape[1] + h = img.shape[0] + for xi in range(0, w): + for xj in range(0, h): + img_copy[xj, xi, 0] = np.clip(int(img[xj, xi, 0] * percetage), a_max=255, a_min=0) + img_copy[xj, xi, 1] = np.clip(int(img[xj, xi, 1] * percetage), a_max=255, a_min=0) + img_copy[xj, xi, 2] = np.clip(int(img[xj, xi, 2] * percetage), a_max=255, a_min=0) + return img_copy + +def Darker_Transformation(img, percetage): + img_copy = img.copy() + w = img.shape[1] + h = img.shape[0] + for xi in range(0, w): + for xj in range(0, h): + img_copy[xj, xi, 0] = int(img[xj, xi, 0] * percetage) + img_copy[xj, xi, 1] = int(img[xj, xi, 1] * percetage) + img_copy[xj, xi, 2] = int(img[xj, xi, 2] * percetage) + return img_copy + +#亮度变换-增强、减弱 +def LD_Transformation(img,img_path): + rows, cols, channel = img.shape + + #增强1.1、1.5、2.0、2.5、3.0 + zq_11 = Brighter_Transformation(img,1.1) + zq_15 = Brighter_Transformation(img,1.5) + zq_20 = Brighter_Transformation(img,2.0) + zq_25 = Brighter_Transformation(img,2.5) + zq_30 = Brighter_Transformation(img,3.0) + + #减弱0.9、0.8、0.5 + jr_09 = Darker_Transformation(img,0.9) + jr_08 = Darker_Transformation(img,0.8) + jr_07 = Darker_Transformation(img,0.7) + + #显示图像 + titles = ['Source', 'ZQ1.1', 'ZQ1.5', 'ZQ2.0', 'ZQ2.5', 'ZQ3.0', 'JR0.9', 'JR0.8', 'JR0.7'] + images = [img, zq_11, zq_15, zq_20, zq_25, zq_30, jr_09, jr_08, jr_07] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_zq_11.png', zq_11) + cv2.imwrite(img_path[0:-4] + '_zq_15.png', zq_15) + cv2.imwrite(img_path[0:-4] + '_zq_20.png', zq_20) + cv2.imwrite(img_path[0:-4] + '_zq_25.png', zq_25) + cv2.imwrite(img_path[0:-4] + '_zq_30.png', zq_30) + cv2.imwrite(img_path[0:-4] + '_jr_09.png', jr_09) + cv2.imwrite(img_path[0:-4] + '_jr_08.png', jr_08) + cv2.imwrite(img_path[0:-4] + '_jr_07.png', jr_07) + +#----------------------------------------------------------------------- +#颜色通道变换 +def Channel__Transformation(img,img_path): + rows, cols, channel = img.shape + img = Brighter_Transformation(img,1.5) #边缘增强 + color_map = [ + cv2.COLORMAP_AUTUMN, + cv2.COLORMAP_BONE, + cv2.COLORMAP_JET, + cv2.COLORMAP_WINTER, + cv2.COLORMAP_PARULA, + cv2.COLORMAP_OCEAN, + cv2.COLORMAP_SUMMER, + cv2.COLORMAP_SPRING, + cv2.COLORMAP_COOL, + cv2.COLORMAP_PINK, + cv2.COLORMAP_HOT, + cv2.COLORMAP_PARULA, + cv2.COLORMAP_MAGMA, + cv2.COLORMAP_INFERNO, + cv2.COLORMAP_PLASMA, + cv2.COLORMAP_TWILIGHT, + cv2.COLORMAP_TWILIGHT_SHIFTED + ] + + rgb_img_01 = cv2.applyColorMap(img, color_map[0]) + rgb_img_02 = cv2.applyColorMap(img, color_map[1]) + rgb_img_03 = cv2.applyColorMap(img, color_map[9]) + rgb_img_04 = cv2.applyColorMap(img, color_map[3]) + rgb_img_05 = cv2.applyColorMap(img, color_map[13]) + rgb_img_06 = cv2.applyColorMap(img, color_map[5]) + rgb_img_07 = cv2.applyColorMap(img, color_map[12]) + rgb_img_08 = cv2.applyColorMap(img, color_map[10]) + + # 通道分离 + b = cv2.split(img)[0] + g = np.zeros((rows,cols), dtype=img.dtype) + r = np.zeros((rows,cols), dtype=img.dtype) + mb = cv2.merge([b, g, r]) + + g = cv2.split(img)[1] + b = np.zeros((rows,cols), dtype=img.dtype) + r = np.zeros((rows,cols), dtype=img.dtype) + mg = cv2.merge([b, g, r]) + + r = cv2.split(img)[2] + b = np.zeros((rows,cols), dtype=img.dtype) + g = np.zeros((rows,cols), dtype=img.dtype) + mr = cv2.merge([b, g, r]) + + #显示图像 + titles = ['Source', 'RGB-1', 'RGB-2', 'RGB-3', 'RGB-4', + 'RGB-5', 'RGB-6', 'RGB-7', 'RGB-8', 'B', 'G', 'R'] + images = [img, rgb_img_01, rgb_img_02, rgb_img_03, rgb_img_04, + rgb_img_05, rgb_img_06, rgb_img_07, rgb_img_08, mb, mg, mr] + for i in range(12): + plt.subplot(4,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_rgb_img_01.png', rgb_img_01) + cv2.imwrite(img_path[0:-4] + '_rgb_img_02.png', rgb_img_02) + cv2.imwrite(img_path[0:-4] + '_rgb_img_03.png', rgb_img_03) + cv2.imwrite(img_path[0:-4] + '_rgb_img_04.png', rgb_img_04) + cv2.imwrite(img_path[0:-4] + '_rgb_img_05.png', rgb_img_05) + cv2.imwrite(img_path[0:-4] + '_rgb_img_06.png', rgb_img_06) + cv2.imwrite(img_path[0:-4] + '_rgb_img_07.png', rgb_img_07) + cv2.imwrite(img_path[0:-4] + '_rgb_img_08.png', rgb_img_08) + cv2.imwrite(img_path[0:-4] + '_mb.png', mb) + cv2.imwrite(img_path[0:-4] + '_mg.png', mg) + cv2.imwrite(img_path[0:-4] + '_mr.png', mr) + +#----------------------------------------------------------------------- +#读取指定文件夹下的所有图像 +def main(): + file_path = "data" + for img_name in os.listdir(file_path): + img_path = file_path + "\\" + img_name + img = cv2.imread(img_path) + + #1.几何变换-镜像、翻转、旋转、缩放 + JH_Transformation(img,img_path) + + #2.亮度变换-增强、减弱 + LD_Transformation(img,img_path) + + #3.颜色通道变换 + Channel__Transformation(img,img_path) + + + break + +if __name__ == "__main__": + main() + diff --git a/blog51-SuiAnalysis/add_dataset-03.py b/blog51-SuiAnalysis/add_dataset-03.py new file mode 100644 index 0000000..1c92bf7 --- /dev/null +++ b/blog51-SuiAnalysis/add_dataset-03.py @@ -0,0 +1,351 @@ +# -*- coding: utf-8 -*- +""" +2022-12-24 +By: Eastmount CSDN xiuzhang +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt +import random + +#----------------------------------------------------------------------- +#几何变换-镜像、翻转、旋转、缩放 +def JH_Transformation(img,img_path): + rows, cols, channel = img.shape + #print(rows,cols,channel) + + #镜像处理 + jx = cv2.flip(img, 1) + + #旋转30度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1) + rotated30 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转45度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) + rotated45 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转90度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 90, 1) + rotated90 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转330度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 330, 1) + rotated330 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转180度 + M = cv2.getRotationMatrix2D((cols/2, rows/2), 180, 1) + rotated180 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #缩小 + sx = cv2.resize(img, (int(cols*0.8), int(rows*0.8))) + + #放大 + fd = cv2.resize(img, (int(cols*1.2), int(rows*1.2))) + + """ + #显示图像 + titles = ['Source', 'JX', 'XZ30', 'XZ45', 'XZ90', 'XZ330', 'XZ180', 'SX', 'FD'] + images = [img, jx, rotated30, rotated45, rotated90, rotated330, rotated180, sx, fd] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_jx.png', jx) + cv2.imwrite(img_path[0:-4] + '_rotated30.png', rotated30) + cv2.imwrite(img_path[0:-4] + '_rotated45.png', rotated45) + cv2.imwrite(img_path[0:-4] + '_rotated90.png', rotated90) + cv2.imwrite(img_path[0:-4] + '_rotated330.png', rotated330) + cv2.imwrite(img_path[0:-4] + '_rotated180.png', rotated180) + cv2.imwrite(img_path[0:-4] + '_sx.png', sx) + cv2.imwrite(img_path[0:-4] + '_fd.png', fd) + +#----------------------------------------------------------------------- +#亮度变换-增强、减弱 +def Brighter_Transformation(img, percetage): + img_copy = img.copy() + w = img.shape[1] + h = img.shape[0] + for xi in range(0, w): + for xj in range(0, h): + img_copy[xj, xi, 0] = np.clip(int(img[xj, xi, 0] * percetage), a_max=255, a_min=0) + img_copy[xj, xi, 1] = np.clip(int(img[xj, xi, 1] * percetage), a_max=255, a_min=0) + img_copy[xj, xi, 2] = np.clip(int(img[xj, xi, 2] * percetage), a_max=255, a_min=0) + return img_copy + +def Darker_Transformation(img, percetage): + img_copy = img.copy() + w = img.shape[1] + h = img.shape[0] + for xi in range(0, w): + for xj in range(0, h): + img_copy[xj, xi, 0] = int(img[xj, xi, 0] * percetage) + img_copy[xj, xi, 1] = int(img[xj, xi, 1] * percetage) + img_copy[xj, xi, 2] = int(img[xj, xi, 2] * percetage) + return img_copy + +def LD_Transformation(img,img_path): + rows, cols, channel = img.shape + + #增强1.1、1.5、2.0、2.5、3.0 + zq_11 = Brighter_Transformation(img,1.1) + zq_15 = Brighter_Transformation(img,1.5) + zq_18 = Brighter_Transformation(img,1.8) + zq_20 = Brighter_Transformation(img,2.0) + zq_25 = Brighter_Transformation(img,2.5) + + #减弱0.9、0.8、0.5 + jr_09 = Darker_Transformation(img,0.9) + jr_08 = Darker_Transformation(img,0.8) + jr_07 = Darker_Transformation(img,0.7) + + """ + #显示图像 + titles = ['Source', 'ZQ1.1', 'ZQ1.5', 'ZQ1.8', 'ZQ2.0', 'ZQ2.5', 'JR0.9', 'JR0.8', 'JR0.7'] + images = [img, zq_11, zq_15, zq_18, zq_20, zq_25, jr_09, jr_08, jr_07] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_zq_11.png', zq_11) + cv2.imwrite(img_path[0:-4] + '_zq_15.png', zq_15) + cv2.imwrite(img_path[0:-4] + '_zq_18.png', zq_18) + cv2.imwrite(img_path[0:-4] + '_zq_20.png', zq_20) + cv2.imwrite(img_path[0:-4] + '_zq_25.png', zq_25) + cv2.imwrite(img_path[0:-4] + '_jr_09.png', jr_09) + cv2.imwrite(img_path[0:-4] + '_jr_08.png', jr_08) + cv2.imwrite(img_path[0:-4] + '_jr_07.png', jr_07) + +#----------------------------------------------------------------------- +#颜色通道变换 +def Channel_Transformation(img,img_path): + rows, cols, channel = img.shape + img = Brighter_Transformation(img,1.5) #边缘增强 + color_map = [ + cv2.COLORMAP_AUTUMN, + cv2.COLORMAP_BONE, + cv2.COLORMAP_JET, + cv2.COLORMAP_WINTER, + cv2.COLORMAP_PARULA, + cv2.COLORMAP_OCEAN, + cv2.COLORMAP_SUMMER, + cv2.COLORMAP_SPRING, + cv2.COLORMAP_COOL, + cv2.COLORMAP_PINK, + cv2.COLORMAP_HOT, + cv2.COLORMAP_PARULA, + cv2.COLORMAP_MAGMA, + cv2.COLORMAP_INFERNO, + cv2.COLORMAP_PLASMA, + cv2.COLORMAP_TWILIGHT, + cv2.COLORMAP_TWILIGHT_SHIFTED + ] + + rgb_img_01 = cv2.applyColorMap(img, color_map[0]) + rgb_img_02 = cv2.applyColorMap(img, color_map[1]) + rgb_img_03 = cv2.applyColorMap(img, color_map[9]) + rgb_img_04 = cv2.applyColorMap(img, color_map[3]) + rgb_img_05 = cv2.applyColorMap(img, color_map[13]) + rgb_img_06 = cv2.applyColorMap(img, color_map[5]) + rgb_img_07 = cv2.applyColorMap(img, color_map[12]) + rgb_img_08 = cv2.applyColorMap(img, color_map[10]) + + # 通道分离 + b = cv2.split(img)[0] + g = np.zeros((rows,cols), dtype=img.dtype) + r = np.zeros((rows,cols), dtype=img.dtype) + mb = cv2.merge([b, g, r]) + + g = cv2.split(img)[1] + b = np.zeros((rows,cols), dtype=img.dtype) + r = np.zeros((rows,cols), dtype=img.dtype) + mg = cv2.merge([b, g, r]) + + r = cv2.split(img)[2] + b = np.zeros((rows,cols), dtype=img.dtype) + g = np.zeros((rows,cols), dtype=img.dtype) + mr = cv2.merge([b, g, r]) + + """ + #显示图像 + titles = ['Source', 'RGB-1', 'RGB-2', 'RGB-3', 'RGB-4', + 'RGB-5', 'RGB-6', 'RGB-7', 'RGB-8', 'B', 'G', 'R'] + images = [img, rgb_img_01, rgb_img_02, rgb_img_03, rgb_img_04, + rgb_img_05, rgb_img_06, rgb_img_07, rgb_img_08, mb, mg, mr] + for i in range(12): + plt.subplot(4,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_rgb_img_01.png', rgb_img_01) + cv2.imwrite(img_path[0:-4] + '_rgb_img_02.png', rgb_img_02) + cv2.imwrite(img_path[0:-4] + '_rgb_img_03.png', rgb_img_03) + cv2.imwrite(img_path[0:-4] + '_rgb_img_04.png', rgb_img_04) + cv2.imwrite(img_path[0:-4] + '_rgb_img_05.png', rgb_img_05) + cv2.imwrite(img_path[0:-4] + '_rgb_img_06.png', rgb_img_06) + cv2.imwrite(img_path[0:-4] + '_rgb_img_07.png', rgb_img_07) + cv2.imwrite(img_path[0:-4] + '_rgb_img_08.png', rgb_img_08) + cv2.imwrite(img_path[0:-4] + '_mb.png', mb) + cv2.imwrite(img_path[0:-4] + '_mg.png', mg) + cv2.imwrite(img_path[0:-4] + '_mr.png', mr) + +#----------------------------------------------------------------------- +#添加高斯噪声和椒盐噪声 +def GaussianNoise(img, percetage): + gn = img.copy() + w = img.shape[1] + h = img.shape[0] + G_NoiseNum = int(percetage * img.shape[0] * img.shape[1]) + for i in range(G_NoiseNum): + lx = np.random.randint(0, h) + ly = np.random.randint(0, w) + gn[lx][ly][np.random.randint(3)] = np.random.randn(1)[0] + return gn + +def SaltNoise(img, percetage): + sn = img.copy() + SP_NoiseNum = int(percetage * img.shape[0] * img.shape[1]) + for i in range(SP_NoiseNum): + randR = np.random.randint(0, img.shape[0] - 1) + randG = np.random.randint(0, img.shape[1] - 1) + randB = np.random.randint(0, 3) + if np.random.randint(0, 1) == 0: + sn[randR, randG, randB] = 0 + else: + sn[randR, randG, randB] = 255 + return sn + +def Gaussian_Salt_Noise(img,img_path): + rows, cols, channel = img.shape + img = Brighter_Transformation(img,1.5) #边缘增强 + + #高斯噪声 + gn_005 = GaussianNoise(img, 0.05) + gn_010 = GaussianNoise(img, 0.10) + gn_015 = GaussianNoise(img, 0.15) + gn_020 = GaussianNoise(img, 0.20) + + #椒盐噪声 + sn_005 = SaltNoise(img, 0.05) + sn_010 = SaltNoise(img, 0.10) + sn_015 = SaltNoise(img, 0.15) + sn_020 = SaltNoise(img, 0.20) + + #显示图像 + titles = ['Source', 'Gaussian-0.05', 'Gaussian-0.10', 'Gaussian-0.15', 'Gaussian-0.20', + 'Salt-0.05', 'Salt-0.10', 'Salt-0.15', 'Salt-0.20'] + images = [img, gn_005, gn_010, gn_015, gn_020, sn_005, sn_010, sn_015, sn_020] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_gn_005.png', gn_005) + cv2.imwrite(img_path[0:-4] + '_gn_010.png', gn_010) + cv2.imwrite(img_path[0:-4] + '_gn_015.png', gn_015) + cv2.imwrite(img_path[0:-4] + '_gn_020.png', gn_020) + cv2.imwrite(img_path[0:-4] + '_sn_005.png', sn_005) + cv2.imwrite(img_path[0:-4] + '_sn_010.png', sn_010) + cv2.imwrite(img_path[0:-4] + '_sn_015.png', sn_015) + cv2.imwrite(img_path[0:-4] + '_sn_020.png', sn_020) + +#----------------------------------------------------------------------- +#模拟怀旧和噪声添加 +def Salt(img, num): + wn = img.copy() + rows, cols, chn = wn.shape + for i in range(num): + x = np.random.randint(0, rows) + y = np.random.randint(0, cols) + wn[x,y,:] = 210 + return wn + +def Fog_Noise(img, percetage): + mask_img = img.copy() + mask_img[:, :] = (166, 178, 180) #雾的颜色 (146,182,213) + + #调整雾的浓度 round(random.uniform(0.03, 0.28), 2) + res = cv2.addWeighted(img, percetage, mask_img, 1-percetage, 0) + return res + +def Fog_Salt_Noise(img,img_path): + rows, cols, channel = img.shape + img = Brighter_Transformation(img,1.5) #边缘增强 + + #白点噪声 + wn_100 = Salt(img, 100) + wn_150 = Salt(img, 150) + wn_200 = Salt(img, 200) + wn_250 = Salt(img, 250) + + #模拟怀旧 + fog_06 = Fog_Noise(img, 0.6) + fog_07 = Fog_Noise(img, 0.7) + fog_08 = Fog_Noise(img, 0.8) + fog_09 = Fog_Noise(img, 0.9) + + #显示图像 + titles = ['Source', 'wn-100', 'wn-150', 'wn-200', 'wn-250', + 'fog_06', 'fog_07', 'fog_08', 'fog_09'] + images = [img, wn_100, wn_150, wn_200, wn_250, + fog_06, fog_07, fog_08, fog_09] + for i in range(9): + plt.subplot(3,3 ,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_wn_100.png', wn_100) + cv2.imwrite(img_path[0:-4] + '_wn_150.png', wn_150) + cv2.imwrite(img_path[0:-4] + '_wn_200.png', wn_200) + cv2.imwrite(img_path[0:-4] + '_wn_250.png', wn_250) + cv2.imwrite(img_path[0:-4] + '_fog_06.png', fog_06) + cv2.imwrite(img_path[0:-4] + '_fog_07.png', fog_07) + cv2.imwrite(img_path[0:-4] + '_fog_08.png', fog_08) + cv2.imwrite(img_path[0:-4] + '_fog_09.png', fog_09) + +#----------------------------------------------------------------------- +#读取指定文件夹下的所有图像 +def main(): + file_path = "data" + for img_name in os.listdir(file_path): + img_path = file_path + "\\" + img_name + res_path = "data_add" + "\\" + img_name + img = cv2.imread(img_path) + + #1.几何变换-镜像、翻转、旋转、缩放 + JH_Transformation(img,res_path) + + #2.亮度变换-增强、减弱 + LD_Transformation(img,res_path) + + #3.颜色通道变换 + Channel_Transformation(img,res_path) + + #4.添加高斯噪声和椒盐噪声 + Gaussian_Salt_Noise(img,res_path) + + #5.模拟怀旧和噪声添加 + Fog_Salt_Noise(img,res_path) + + + break + +if __name__ == "__main__": + main() + diff --git a/blog51-SuiAnalysis/add_dataset-04-final.py b/blog51-SuiAnalysis/add_dataset-04-final.py new file mode 100644 index 0000000..49fc641 --- /dev/null +++ b/blog51-SuiAnalysis/add_dataset-04-final.py @@ -0,0 +1,352 @@ +# -*- coding: utf-8 -*- +""" +2022-12-24 +By: Eastmount CSDN xiuzhang +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt +import random + +#----------------------------------------------------------------------- +#几何变换-镜像、翻转、旋转、缩放 +def JH_Transformation(img,img_path): + rows, cols, channel = img.shape + #print(rows,cols,channel) + + #镜像处理 + jx = cv2.flip(img, 1) + + #旋转30度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1) + rotated30 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转45度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) + rotated45 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转90度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 90, 1) + rotated90 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转330度 (旋转中心,旋转度数,scale) + M = cv2.getRotationMatrix2D((cols/2, rows/2), 330, 1) + rotated330 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #旋转180度 + M = cv2.getRotationMatrix2D((cols/2, rows/2), 180, 1) + rotated180 = cv2.warpAffine(img, M, (cols, rows), borderValue=(255,255,255)) + + #缩小 + sx = cv2.resize(img, (int(cols*0.8), int(rows*0.8))) + + #放大 + fd = cv2.resize(img, (int(cols*1.2), int(rows*1.2))) + + """ + #显示图像 + titles = ['Source', 'JX', 'XZ30', 'XZ45', 'XZ90', 'XZ330', 'XZ180', 'SX', 'FD'] + images = [img, jx, rotated30, rotated45, rotated90, rotated330, rotated180, sx, fd] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_jx.png', jx) + cv2.imwrite(img_path[0:-4] + '_rotated30.png', rotated30) + cv2.imwrite(img_path[0:-4] + '_rotated45.png', rotated45) + cv2.imwrite(img_path[0:-4] + '_rotated90.png', rotated90) + cv2.imwrite(img_path[0:-4] + '_rotated330.png', rotated330) + cv2.imwrite(img_path[0:-4] + '_rotated180.png', rotated180) + cv2.imwrite(img_path[0:-4] + '_sx.png', sx) + cv2.imwrite(img_path[0:-4] + '_fd.png', fd) + +#----------------------------------------------------------------------- +#亮度变换-增强、减弱 +def Brighter_Transformation(img, percetage): + img_copy = img.copy() + w = img.shape[1] + h = img.shape[0] + for xi in range(0, w): + for xj in range(0, h): + img_copy[xj, xi, 0] = np.clip(int(img[xj, xi, 0] * percetage), a_max=255, a_min=0) + img_copy[xj, xi, 1] = np.clip(int(img[xj, xi, 1] * percetage), a_max=255, a_min=0) + img_copy[xj, xi, 2] = np.clip(int(img[xj, xi, 2] * percetage), a_max=255, a_min=0) + return img_copy + +def Darker_Transformation(img, percetage): + img_copy = img.copy() + w = img.shape[1] + h = img.shape[0] + for xi in range(0, w): + for xj in range(0, h): + img_copy[xj, xi, 0] = int(img[xj, xi, 0] * percetage) + img_copy[xj, xi, 1] = int(img[xj, xi, 1] * percetage) + img_copy[xj, xi, 2] = int(img[xj, xi, 2] * percetage) + return img_copy + +def LD_Transformation(img,img_path): + rows, cols, channel = img.shape + + #增强1.1、1.5、2.0、2.5、3.0 + zq_11 = Brighter_Transformation(img,1.1) + zq_15 = Brighter_Transformation(img,1.5) + zq_18 = Brighter_Transformation(img,1.8) + zq_20 = Brighter_Transformation(img,2.0) + zq_25 = Brighter_Transformation(img,2.5) + + #减弱0.9、0.8、0.5 + jr_09 = Darker_Transformation(img,0.9) + jr_08 = Darker_Transformation(img,0.8) + jr_07 = Darker_Transformation(img,0.7) + + """ + #显示图像 + titles = ['Source', 'ZQ1.1', 'ZQ1.5', 'ZQ1.8', 'ZQ2.0', 'ZQ2.5', 'JR0.9', 'JR0.8', 'JR0.7'] + images = [img, zq_11, zq_15, zq_18, zq_20, zq_25, jr_09, jr_08, jr_07] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_zq_11.png', zq_11) + cv2.imwrite(img_path[0:-4] + '_zq_15.png', zq_15) + cv2.imwrite(img_path[0:-4] + '_zq_18.png', zq_18) + cv2.imwrite(img_path[0:-4] + '_zq_20.png', zq_20) + cv2.imwrite(img_path[0:-4] + '_zq_25.png', zq_25) + cv2.imwrite(img_path[0:-4] + '_jr_09.png', jr_09) + cv2.imwrite(img_path[0:-4] + '_jr_08.png', jr_08) + cv2.imwrite(img_path[0:-4] + '_jr_07.png', jr_07) + +#----------------------------------------------------------------------- +#颜色通道变换 +def Channel_Transformation(img,img_path): + rows, cols, channel = img.shape + img = Brighter_Transformation(img,1.5) #边缘增强 + color_map = [ + cv2.COLORMAP_AUTUMN, + cv2.COLORMAP_BONE, + cv2.COLORMAP_JET, + cv2.COLORMAP_WINTER, + cv2.COLORMAP_PARULA, + cv2.COLORMAP_OCEAN, + cv2.COLORMAP_SUMMER, + cv2.COLORMAP_SPRING, + cv2.COLORMAP_COOL, + cv2.COLORMAP_PINK, + cv2.COLORMAP_HOT, + cv2.COLORMAP_PARULA, + cv2.COLORMAP_MAGMA, + cv2.COLORMAP_INFERNO, + cv2.COLORMAP_PLASMA, + cv2.COLORMAP_TWILIGHT, + cv2.COLORMAP_TWILIGHT_SHIFTED + ] + + rgb_img_01 = cv2.applyColorMap(img, color_map[0]) + rgb_img_02 = cv2.applyColorMap(img, color_map[1]) + rgb_img_03 = cv2.applyColorMap(img, color_map[9]) + rgb_img_04 = cv2.applyColorMap(img, color_map[3]) + rgb_img_05 = cv2.applyColorMap(img, color_map[13]) + rgb_img_06 = cv2.applyColorMap(img, color_map[5]) + rgb_img_07 = cv2.applyColorMap(img, color_map[12]) + rgb_img_08 = cv2.applyColorMap(img, color_map[10]) + + # 通道分离 + b = cv2.split(img)[0] + g = np.zeros((rows,cols), dtype=img.dtype) + r = np.zeros((rows,cols), dtype=img.dtype) + mb = cv2.merge([b, g, r]) + + g = cv2.split(img)[1] + b = np.zeros((rows,cols), dtype=img.dtype) + r = np.zeros((rows,cols), dtype=img.dtype) + mg = cv2.merge([b, g, r]) + + r = cv2.split(img)[2] + b = np.zeros((rows,cols), dtype=img.dtype) + g = np.zeros((rows,cols), dtype=img.dtype) + mr = cv2.merge([b, g, r]) + + """ + #显示图像 + titles = ['Source', 'RGB-1', 'RGB-2', 'RGB-3', 'RGB-4', + 'RGB-5', 'RGB-6', 'RGB-7', 'RGB-8', 'B', 'G', 'R'] + images = [img, rgb_img_01, rgb_img_02, rgb_img_03, rgb_img_04, + rgb_img_05, rgb_img_06, rgb_img_07, rgb_img_08, mb, mg, mr] + for i in range(12): + plt.subplot(4,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_rgb_img_01.png', rgb_img_01) + cv2.imwrite(img_path[0:-4] + '_rgb_img_02.png', rgb_img_02) + cv2.imwrite(img_path[0:-4] + '_rgb_img_03.png', rgb_img_03) + cv2.imwrite(img_path[0:-4] + '_rgb_img_04.png', rgb_img_04) + cv2.imwrite(img_path[0:-4] + '_rgb_img_05.png', rgb_img_05) + cv2.imwrite(img_path[0:-4] + '_rgb_img_06.png', rgb_img_06) + cv2.imwrite(img_path[0:-4] + '_rgb_img_07.png', rgb_img_07) + cv2.imwrite(img_path[0:-4] + '_rgb_img_08.png', rgb_img_08) + cv2.imwrite(img_path[0:-4] + '_mb.png', mb) + cv2.imwrite(img_path[0:-4] + '_mg.png', mg) + cv2.imwrite(img_path[0:-4] + '_mr.png', mr) + +#----------------------------------------------------------------------- +#添加高斯噪声和椒盐噪声 +def GaussianNoise(img, percetage): + gn = img.copy() + w = img.shape[1] + h = img.shape[0] + G_NoiseNum = int(percetage * img.shape[0] * img.shape[1]) + for i in range(G_NoiseNum): + lx = np.random.randint(0, h) + ly = np.random.randint(0, w) + gn[lx][ly][np.random.randint(3)] = np.random.randn(1)[0] + return gn + +def SaltNoise(img, percetage): + sn = img.copy() + SP_NoiseNum = int(percetage * img.shape[0] * img.shape[1]) + for i in range(SP_NoiseNum): + randR = np.random.randint(0, img.shape[0] - 1) + randG = np.random.randint(0, img.shape[1] - 1) + randB = np.random.randint(0, 3) + if np.random.randint(0, 1) == 0: + sn[randR, randG, randB] = 0 + else: + sn[randR, randG, randB] = 255 + return sn + +def Gaussian_Salt_Noise(img,img_path): + rows, cols, channel = img.shape + img = Brighter_Transformation(img,1.5) #边缘增强 + + #高斯噪声 + gn_005 = GaussianNoise(img, 0.05) + gn_010 = GaussianNoise(img, 0.10) + gn_015 = GaussianNoise(img, 0.15) + gn_020 = GaussianNoise(img, 0.20) + + #椒盐噪声 + sn_005 = SaltNoise(img, 0.05) + sn_010 = SaltNoise(img, 0.10) + sn_015 = SaltNoise(img, 0.15) + sn_020 = SaltNoise(img, 0.20) + + """ + #显示图像 + titles = ['Source', 'Gaussian-0.05', 'Gaussian-0.10', 'Gaussian-0.15', 'Gaussian-0.20', + 'Salt-0.05', 'Salt-0.10', 'Salt-0.15', 'Salt-0.20'] + images = [img, gn_005, gn_010, gn_015, gn_020, sn_005, sn_010, sn_015, sn_020] + for i in range(9): + plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_gn_005.png', gn_005) + cv2.imwrite(img_path[0:-4] + '_gn_010.png', gn_010) + cv2.imwrite(img_path[0:-4] + '_gn_015.png', gn_015) + cv2.imwrite(img_path[0:-4] + '_gn_020.png', gn_020) + cv2.imwrite(img_path[0:-4] + '_sn_005.png', sn_005) + cv2.imwrite(img_path[0:-4] + '_sn_010.png', sn_010) + cv2.imwrite(img_path[0:-4] + '_sn_015.png', sn_015) + cv2.imwrite(img_path[0:-4] + '_sn_020.png', sn_020) + +#----------------------------------------------------------------------- +#模拟怀旧和噪声添加 +def Salt(img, num): + wn = img.copy() + rows, cols, chn = wn.shape + for i in range(num): + x = np.random.randint(0, rows) + y = np.random.randint(0, cols) + wn[x,y,:] = 210 + return wn + +def Fog_Noise(img, percetage): + mask_img = img.copy() + mask_img[:, :] = (166, 178, 180) #雾的颜色 (146,182,213) + + #调整雾的浓度 round(random.uniform(0.03, 0.28), 2) + res = cv2.addWeighted(img, percetage, mask_img, 1-percetage, 0) + return res + +def Fog_Salt_Noise(img,img_path): + rows, cols, channel = img.shape + img = Brighter_Transformation(img,1.5) #边缘增强 + + #白点噪声 + wn_100 = Salt(img, 100) + wn_150 = Salt(img, 150) + wn_200 = Salt(img, 200) + wn_250 = Salt(img, 250) + + #模拟怀旧 + fog_06 = Fog_Noise(img, 0.6) + fog_07 = Fog_Noise(img, 0.7) + fog_08 = Fog_Noise(img, 0.8) + fog_09 = Fog_Noise(img, 0.9) + + """ + #显示图像 + titles = ['Source', 'wn-100', 'wn-150', 'wn-200', 'wn-250', + 'fog_06', 'fog_07', 'fog_08', 'fog_09'] + images = [img, wn_100, wn_150, wn_200, wn_250, + fog_06, fog_07, fog_08, fog_09] + for i in range(9): + plt.subplot(3,3 ,i+1), plt.imshow(images[i], 'gray') + plt.title(titles[i]) + plt.xticks([]),plt.yticks([]) + plt.show() + """ + + #保存图像 + cv2.imwrite(img_path[0:-4] + '_wn_100.png', wn_100) + cv2.imwrite(img_path[0:-4] + '_wn_150.png', wn_150) + cv2.imwrite(img_path[0:-4] + '_wn_200.png', wn_200) + cv2.imwrite(img_path[0:-4] + '_wn_250.png', wn_250) + cv2.imwrite(img_path[0:-4] + '_fog_06.png', fog_06) + cv2.imwrite(img_path[0:-4] + '_fog_07.png', fog_07) + cv2.imwrite(img_path[0:-4] + '_fog_08.png', fog_08) + cv2.imwrite(img_path[0:-4] + '_fog_09.png', fog_09) + +#----------------------------------------------------------------------- +#读取指定文件夹下的所有图像 +def main(): + file_path = "data" + for img_name in os.listdir(file_path): + img_path = file_path + "\\" + img_name + res_path = "data_add" + "\\" + img_name + img = cv2.imread(img_path) + + #1.几何变换-镜像、翻转、旋转、缩放 + JH_Transformation(img,res_path) + + #2.亮度变换-增强、减弱 + LD_Transformation(img,res_path) + + #3.颜色通道变换 + Channel_Transformation(img,res_path) + + #4.添加高斯噪声和椒盐噪声 + Gaussian_Salt_Noise(img,res_path) + + #5.模拟怀旧和噪声添加 + Fog_Salt_Noise(img,res_path) + +if __name__ == "__main__": + main() + diff --git a/blog51-SuiAnalysis/data/0-00.png b/blog51-SuiAnalysis/data/0-00.png new file mode 100644 index 0000000..2d9bac5 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-00.png differ diff --git a/blog51-SuiAnalysis/data/0-01.png b/blog51-SuiAnalysis/data/0-01.png new file mode 100644 index 0000000..029fa03 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-01.png differ diff --git a/blog51-SuiAnalysis/data/0-02.png b/blog51-SuiAnalysis/data/0-02.png new file mode 100644 index 0000000..c7c0c80 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-02.png differ diff --git a/blog51-SuiAnalysis/data/0-03.png b/blog51-SuiAnalysis/data/0-03.png new file mode 100644 index 0000000..721b2d9 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-03.png differ diff --git a/blog51-SuiAnalysis/data/0-04.png b/blog51-SuiAnalysis/data/0-04.png new file mode 100644 index 0000000..cb69685 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-04.png differ diff --git a/blog51-SuiAnalysis/data/0-05.png b/blog51-SuiAnalysis/data/0-05.png new file mode 100644 index 0000000..5dc9777 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-05.png differ diff --git a/blog51-SuiAnalysis/data/0-06.png b/blog51-SuiAnalysis/data/0-06.png new file mode 100644 index 0000000..7fb89f9 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-06.png differ diff --git a/blog51-SuiAnalysis/data/0-07.png b/blog51-SuiAnalysis/data/0-07.png new file mode 100644 index 0000000..aa73f0d Binary files /dev/null and b/blog51-SuiAnalysis/data/0-07.png differ diff --git a/blog51-SuiAnalysis/data/0-08.png b/blog51-SuiAnalysis/data/0-08.png new file mode 100644 index 0000000..27a73cf Binary files /dev/null and b/blog51-SuiAnalysis/data/0-08.png differ diff --git a/blog51-SuiAnalysis/data/0-09.png b/blog51-SuiAnalysis/data/0-09.png new file mode 100644 index 0000000..106b278 Binary files /dev/null and b/blog51-SuiAnalysis/data/0-09.png differ diff --git a/blog51-SuiAnalysis/data/1-00.png b/blog51-SuiAnalysis/data/1-00.png new file mode 100644 index 0000000..b840920 Binary files /dev/null and b/blog51-SuiAnalysis/data/1-00.png differ diff --git a/blog51-SuiAnalysis/data/1-01.png b/blog51-SuiAnalysis/data/1-01.png new file mode 100644 index 0000000..509be8f Binary files /dev/null and b/blog51-SuiAnalysis/data/1-01.png differ diff --git a/blog51-SuiAnalysis/data/1-02.png b/blog51-SuiAnalysis/data/1-02.png new file mode 100644 index 0000000..8253780 Binary files /dev/null and b/blog51-SuiAnalysis/data/1-02.png differ diff --git a/blog51-SuiAnalysis/data/1-03.png b/blog51-SuiAnalysis/data/1-03.png new file mode 100644 index 0000000..04b39c9 Binary files /dev/null and b/blog51-SuiAnalysis/data/1-03.png differ diff --git a/blog51-SuiAnalysis/data/1-04.png b/blog51-SuiAnalysis/data/1-04.png new file mode 100644 index 0000000..eafb14f Binary files /dev/null and b/blog51-SuiAnalysis/data/1-04.png differ diff --git a/blog51-SuiAnalysis/data/1-05.png b/blog51-SuiAnalysis/data/1-05.png new file mode 100644 index 0000000..ea5c2f0 Binary files /dev/null and b/blog51-SuiAnalysis/data/1-05.png differ diff --git a/blog51-SuiAnalysis/data/1-06.png b/blog51-SuiAnalysis/data/1-06.png new file mode 100644 index 0000000..9253451 Binary files /dev/null and b/blog51-SuiAnalysis/data/1-06.png differ diff --git a/blog51-SuiAnalysis/data/1-07.png b/blog51-SuiAnalysis/data/1-07.png new file mode 100644 index 0000000..e383e84 Binary files /dev/null and b/blog51-SuiAnalysis/data/1-07.png differ diff --git a/blog51-SuiAnalysis/data/1-08.png b/blog51-SuiAnalysis/data/1-08.png new file mode 100644 index 0000000..fb62b1a Binary files /dev/null and b/blog51-SuiAnalysis/data/1-08.png differ diff --git a/blog51-SuiAnalysis/data/1-09.png b/blog51-SuiAnalysis/data/1-09.png new file mode 100644 index 0000000..20fcae2 Binary files /dev/null and b/blog51-SuiAnalysis/data/1-09.png differ diff --git a/blog51-SuiAnalysis/data/10-00.png b/blog51-SuiAnalysis/data/10-00.png new file mode 100644 index 0000000..b545925 Binary files /dev/null and b/blog51-SuiAnalysis/data/10-00.png differ diff --git a/blog51-SuiAnalysis/data/10-01.png b/blog51-SuiAnalysis/data/10-01.png new file mode 100644 index 0000000..dfa2ad4 Binary files /dev/null and b/blog51-SuiAnalysis/data/10-01.png differ diff --git a/blog51-SuiAnalysis/data/10-02.png b/blog51-SuiAnalysis/data/10-02.png new file mode 100644 index 0000000..53094fb Binary files /dev/null and b/blog51-SuiAnalysis/data/10-02.png differ diff --git a/blog51-SuiAnalysis/data/10-03.png b/blog51-SuiAnalysis/data/10-03.png new file mode 100644 index 0000000..d1cb7a2 Binary files /dev/null and b/blog51-SuiAnalysis/data/10-03.png differ diff --git a/blog51-SuiAnalysis/data/10-04.png b/blog51-SuiAnalysis/data/10-04.png new file mode 100644 index 0000000..10a5e92 Binary files /dev/null and b/blog51-SuiAnalysis/data/10-04.png differ diff --git a/blog51-SuiAnalysis/data/10-05.png b/blog51-SuiAnalysis/data/10-05.png new file mode 100644 index 0000000..54a8f28 Binary files /dev/null and b/blog51-SuiAnalysis/data/10-05.png differ diff --git a/blog51-SuiAnalysis/data/10-06.png b/blog51-SuiAnalysis/data/10-06.png new file mode 100644 index 0000000..365893d Binary files /dev/null and b/blog51-SuiAnalysis/data/10-06.png differ diff --git a/blog51-SuiAnalysis/data/10-07.png b/blog51-SuiAnalysis/data/10-07.png new file mode 100644 index 0000000..3732f8e Binary files /dev/null and b/blog51-SuiAnalysis/data/10-07.png differ diff --git a/blog51-SuiAnalysis/data/10-08.png b/blog51-SuiAnalysis/data/10-08.png new file mode 100644 index 0000000..64d0f00 Binary files /dev/null and b/blog51-SuiAnalysis/data/10-08.png differ diff --git a/blog51-SuiAnalysis/data/10-09.png b/blog51-SuiAnalysis/data/10-09.png new file mode 100644 index 0000000..6e36516 Binary files /dev/null and b/blog51-SuiAnalysis/data/10-09.png differ diff --git a/blog51-SuiAnalysis/data/11-00.png b/blog51-SuiAnalysis/data/11-00.png new file mode 100644 index 0000000..07caae3 Binary files /dev/null and b/blog51-SuiAnalysis/data/11-00.png differ diff --git a/blog51-SuiAnalysis/data/11-01.png b/blog51-SuiAnalysis/data/11-01.png new file mode 100644 index 0000000..4376fb2 Binary files /dev/null and b/blog51-SuiAnalysis/data/11-01.png differ diff --git a/blog51-SuiAnalysis/data/11-02.png b/blog51-SuiAnalysis/data/11-02.png new file mode 100644 index 0000000..c7db0ea Binary files /dev/null and b/blog51-SuiAnalysis/data/11-02.png differ diff --git a/blog51-SuiAnalysis/data/11-03.png b/blog51-SuiAnalysis/data/11-03.png new file mode 100644 index 0000000..8312dfb Binary files /dev/null and b/blog51-SuiAnalysis/data/11-03.png differ diff --git a/blog51-SuiAnalysis/data/11-04.png b/blog51-SuiAnalysis/data/11-04.png new file mode 100644 index 0000000..cd1e26d Binary files /dev/null and b/blog51-SuiAnalysis/data/11-04.png differ diff --git a/blog51-SuiAnalysis/data/11-05.png b/blog51-SuiAnalysis/data/11-05.png new file mode 100644 index 0000000..6dbbca3 Binary files /dev/null and b/blog51-SuiAnalysis/data/11-05.png differ diff --git a/blog51-SuiAnalysis/data/11-06.png b/blog51-SuiAnalysis/data/11-06.png new file mode 100644 index 0000000..e46a91b Binary files /dev/null and b/blog51-SuiAnalysis/data/11-06.png differ diff --git a/blog51-SuiAnalysis/data/11-07.png b/blog51-SuiAnalysis/data/11-07.png new file mode 100644 index 0000000..4d5a911 Binary files /dev/null and b/blog51-SuiAnalysis/data/11-07.png differ diff --git a/blog51-SuiAnalysis/data/11-08.png b/blog51-SuiAnalysis/data/11-08.png new file mode 100644 index 0000000..5bd347c Binary files /dev/null and b/blog51-SuiAnalysis/data/11-08.png differ diff --git a/blog51-SuiAnalysis/data/11-09.png b/blog51-SuiAnalysis/data/11-09.png new file mode 100644 index 0000000..10cca94 Binary files /dev/null and b/blog51-SuiAnalysis/data/11-09.png differ diff --git a/blog51-SuiAnalysis/data/2-00.png b/blog51-SuiAnalysis/data/2-00.png new file mode 100644 index 0000000..65d9840 Binary files /dev/null and b/blog51-SuiAnalysis/data/2-00.png differ diff --git a/blog51-SuiAnalysis/data/2-01.png b/blog51-SuiAnalysis/data/2-01.png new file mode 100644 index 0000000..a6a4bc0 Binary files /dev/null and b/blog51-SuiAnalysis/data/2-01.png differ diff --git a/blog51-SuiAnalysis/data/2-02.png b/blog51-SuiAnalysis/data/2-02.png new file mode 100644 index 0000000..8c7bf78 Binary files /dev/null and b/blog51-SuiAnalysis/data/2-02.png differ diff --git a/blog51-SuiAnalysis/data/2-03.png b/blog51-SuiAnalysis/data/2-03.png new file mode 100644 index 0000000..922a96c Binary files /dev/null and b/blog51-SuiAnalysis/data/2-03.png differ diff --git a/blog51-SuiAnalysis/data/2-04.png b/blog51-SuiAnalysis/data/2-04.png new file mode 100644 index 0000000..cf42afa Binary files /dev/null and b/blog51-SuiAnalysis/data/2-04.png differ diff --git a/blog51-SuiAnalysis/data/2-05.png b/blog51-SuiAnalysis/data/2-05.png new file mode 100644 index 0000000..af8626e Binary files /dev/null and b/blog51-SuiAnalysis/data/2-05.png differ diff --git a/blog51-SuiAnalysis/data/2-06.png b/blog51-SuiAnalysis/data/2-06.png new file mode 100644 index 0000000..e289205 Binary files /dev/null and b/blog51-SuiAnalysis/data/2-06.png differ diff --git a/blog51-SuiAnalysis/data/2-07.png b/blog51-SuiAnalysis/data/2-07.png new file mode 100644 index 0000000..2c5a9e2 Binary files /dev/null and b/blog51-SuiAnalysis/data/2-07.png differ diff --git a/blog51-SuiAnalysis/data/2-08.png b/blog51-SuiAnalysis/data/2-08.png new file mode 100644 index 0000000..a5ca059 Binary files /dev/null and b/blog51-SuiAnalysis/data/2-08.png differ diff --git a/blog51-SuiAnalysis/data/2-09.png b/blog51-SuiAnalysis/data/2-09.png new file mode 100644 index 0000000..bcfe476 Binary files /dev/null and b/blog51-SuiAnalysis/data/2-09.png differ diff --git a/blog51-SuiAnalysis/data/3-00.png b/blog51-SuiAnalysis/data/3-00.png new file mode 100644 index 0000000..09bf3e2 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-00.png differ diff --git a/blog51-SuiAnalysis/data/3-01.png b/blog51-SuiAnalysis/data/3-01.png new file mode 100644 index 0000000..4c5a535 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-01.png differ diff --git a/blog51-SuiAnalysis/data/3-02.png b/blog51-SuiAnalysis/data/3-02.png new file mode 100644 index 0000000..84fd78e Binary files /dev/null and b/blog51-SuiAnalysis/data/3-02.png differ diff --git a/blog51-SuiAnalysis/data/3-03.png b/blog51-SuiAnalysis/data/3-03.png new file mode 100644 index 0000000..8ffe9d6 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-03.png differ diff --git a/blog51-SuiAnalysis/data/3-04.png b/blog51-SuiAnalysis/data/3-04.png new file mode 100644 index 0000000..1e1cd01 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-04.png differ diff --git a/blog51-SuiAnalysis/data/3-05.png b/blog51-SuiAnalysis/data/3-05.png new file mode 100644 index 0000000..f6c8fb7 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-05.png differ diff --git a/blog51-SuiAnalysis/data/3-06.png b/blog51-SuiAnalysis/data/3-06.png new file mode 100644 index 0000000..0b5da34 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-06.png differ diff --git a/blog51-SuiAnalysis/data/3-07.png b/blog51-SuiAnalysis/data/3-07.png new file mode 100644 index 0000000..a4814c9 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-07.png differ diff --git a/blog51-SuiAnalysis/data/3-08.png b/blog51-SuiAnalysis/data/3-08.png new file mode 100644 index 0000000..3c5f386 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-08.png differ diff --git a/blog51-SuiAnalysis/data/3-09.png b/blog51-SuiAnalysis/data/3-09.png new file mode 100644 index 0000000..56cc6a4 Binary files /dev/null and b/blog51-SuiAnalysis/data/3-09.png differ diff --git a/blog51-SuiAnalysis/data/4-00.png b/blog51-SuiAnalysis/data/4-00.png new file mode 100644 index 0000000..82aae08 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-00.png differ diff --git a/blog51-SuiAnalysis/data/4-01.png b/blog51-SuiAnalysis/data/4-01.png new file mode 100644 index 0000000..3c83e81 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-01.png differ diff --git a/blog51-SuiAnalysis/data/4-02.png b/blog51-SuiAnalysis/data/4-02.png new file mode 100644 index 0000000..4e5120c Binary files /dev/null and b/blog51-SuiAnalysis/data/4-02.png differ diff --git a/blog51-SuiAnalysis/data/4-03.png b/blog51-SuiAnalysis/data/4-03.png new file mode 100644 index 0000000..a4154a7 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-03.png differ diff --git a/blog51-SuiAnalysis/data/4-04.png b/blog51-SuiAnalysis/data/4-04.png new file mode 100644 index 0000000..9f94e56 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-04.png differ diff --git a/blog51-SuiAnalysis/data/4-05.png b/blog51-SuiAnalysis/data/4-05.png new file mode 100644 index 0000000..60cb466 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-05.png differ diff --git a/blog51-SuiAnalysis/data/4-06.png b/blog51-SuiAnalysis/data/4-06.png new file mode 100644 index 0000000..dbd9a6b Binary files /dev/null and b/blog51-SuiAnalysis/data/4-06.png differ diff --git a/blog51-SuiAnalysis/data/4-07.png b/blog51-SuiAnalysis/data/4-07.png new file mode 100644 index 0000000..ac17d55 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-07.png differ diff --git a/blog51-SuiAnalysis/data/4-08.png b/blog51-SuiAnalysis/data/4-08.png new file mode 100644 index 0000000..13875a8 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-08.png differ diff --git a/blog51-SuiAnalysis/data/4-09.png b/blog51-SuiAnalysis/data/4-09.png new file mode 100644 index 0000000..ea9d6e0 Binary files /dev/null and b/blog51-SuiAnalysis/data/4-09.png differ diff --git a/blog51-SuiAnalysis/data/5-00.png b/blog51-SuiAnalysis/data/5-00.png new file mode 100644 index 0000000..c01923b Binary files /dev/null and b/blog51-SuiAnalysis/data/5-00.png differ diff --git a/blog51-SuiAnalysis/data/5-01.png b/blog51-SuiAnalysis/data/5-01.png new file mode 100644 index 0000000..79f9845 Binary files /dev/null and b/blog51-SuiAnalysis/data/5-01.png differ diff --git a/blog51-SuiAnalysis/data/5-02.png b/blog51-SuiAnalysis/data/5-02.png new file mode 100644 index 0000000..a35888a Binary files /dev/null and b/blog51-SuiAnalysis/data/5-02.png differ diff --git a/blog51-SuiAnalysis/data/5-03.png b/blog51-SuiAnalysis/data/5-03.png new file mode 100644 index 0000000..d62ee1b Binary files /dev/null and b/blog51-SuiAnalysis/data/5-03.png differ diff --git a/blog51-SuiAnalysis/data/5-04.png b/blog51-SuiAnalysis/data/5-04.png new file mode 100644 index 0000000..cebb7bc Binary files /dev/null and b/blog51-SuiAnalysis/data/5-04.png differ diff --git a/blog51-SuiAnalysis/data/5-05.png b/blog51-SuiAnalysis/data/5-05.png new file mode 100644 index 0000000..56df85a Binary files /dev/null and b/blog51-SuiAnalysis/data/5-05.png differ diff --git a/blog51-SuiAnalysis/data/5-06.png b/blog51-SuiAnalysis/data/5-06.png new file mode 100644 index 0000000..a25c872 Binary files /dev/null and b/blog51-SuiAnalysis/data/5-06.png differ diff --git a/blog51-SuiAnalysis/data/5-07.png b/blog51-SuiAnalysis/data/5-07.png new file mode 100644 index 0000000..1f3c6bb Binary files /dev/null and b/blog51-SuiAnalysis/data/5-07.png differ diff --git a/blog51-SuiAnalysis/data/5-08.png b/blog51-SuiAnalysis/data/5-08.png new file mode 100644 index 0000000..6ea10c4 Binary files /dev/null and b/blog51-SuiAnalysis/data/5-08.png differ diff --git a/blog51-SuiAnalysis/data/5-09.png b/blog51-SuiAnalysis/data/5-09.png new file mode 100644 index 0000000..17ccd95 Binary files /dev/null and b/blog51-SuiAnalysis/data/5-09.png differ diff --git a/blog51-SuiAnalysis/data/6-00.png b/blog51-SuiAnalysis/data/6-00.png new file mode 100644 index 0000000..b406408 Binary files /dev/null and b/blog51-SuiAnalysis/data/6-00.png differ diff --git a/blog51-SuiAnalysis/data/6-01.png b/blog51-SuiAnalysis/data/6-01.png new file mode 100644 index 0000000..efadecc Binary files /dev/null and b/blog51-SuiAnalysis/data/6-01.png differ diff --git a/blog51-SuiAnalysis/data/6-02.png b/blog51-SuiAnalysis/data/6-02.png new file mode 100644 index 0000000..d967419 Binary files /dev/null and b/blog51-SuiAnalysis/data/6-02.png differ diff --git a/blog51-SuiAnalysis/data/6-03.png b/blog51-SuiAnalysis/data/6-03.png new file mode 100644 index 0000000..60c8022 Binary files /dev/null and b/blog51-SuiAnalysis/data/6-03.png differ diff --git a/blog51-SuiAnalysis/data/6-04.png b/blog51-SuiAnalysis/data/6-04.png new file mode 100644 index 0000000..2451612 Binary files /dev/null and b/blog51-SuiAnalysis/data/6-04.png differ diff --git a/blog51-SuiAnalysis/data/6-05.png b/blog51-SuiAnalysis/data/6-05.png new file mode 100644 index 0000000..7fdaf32 Binary files /dev/null and b/blog51-SuiAnalysis/data/6-05.png differ diff --git a/blog51-SuiAnalysis/data/6-06.png b/blog51-SuiAnalysis/data/6-06.png new file mode 100644 index 0000000..b5067b7 Binary files /dev/null and b/blog51-SuiAnalysis/data/6-06.png differ diff --git a/blog51-SuiAnalysis/data/6-07.png b/blog51-SuiAnalysis/data/6-07.png new file mode 100644 index 0000000..516d1ba Binary files /dev/null and b/blog51-SuiAnalysis/data/6-07.png differ diff --git a/blog51-SuiAnalysis/data/6-08.png b/blog51-SuiAnalysis/data/6-08.png new file mode 100644 index 0000000..5d53c4a Binary files /dev/null and b/blog51-SuiAnalysis/data/6-08.png differ diff --git a/blog51-SuiAnalysis/data/6-09.png b/blog51-SuiAnalysis/data/6-09.png new file mode 100644 index 0000000..e4288af Binary files /dev/null and b/blog51-SuiAnalysis/data/6-09.png differ diff --git a/blog51-SuiAnalysis/data/7-00.png b/blog51-SuiAnalysis/data/7-00.png new file mode 100644 index 0000000..b6348e9 Binary files /dev/null and b/blog51-SuiAnalysis/data/7-00.png differ diff --git a/blog51-SuiAnalysis/data/7-01.png b/blog51-SuiAnalysis/data/7-01.png new file mode 100644 index 0000000..4ee9dba Binary files /dev/null and b/blog51-SuiAnalysis/data/7-01.png differ diff --git a/blog51-SuiAnalysis/data/7-02.png b/blog51-SuiAnalysis/data/7-02.png new file mode 100644 index 0000000..c209997 Binary files /dev/null and b/blog51-SuiAnalysis/data/7-02.png differ diff --git a/blog51-SuiAnalysis/data/7-03.png b/blog51-SuiAnalysis/data/7-03.png new file mode 100644 index 0000000..0f0165a Binary files /dev/null and b/blog51-SuiAnalysis/data/7-03.png differ diff --git a/blog51-SuiAnalysis/data/7-04.png b/blog51-SuiAnalysis/data/7-04.png new file mode 100644 index 0000000..214bc0f Binary files /dev/null and b/blog51-SuiAnalysis/data/7-04.png differ diff --git a/blog51-SuiAnalysis/data/7-05.png b/blog51-SuiAnalysis/data/7-05.png new file mode 100644 index 0000000..8ed944d Binary files /dev/null and b/blog51-SuiAnalysis/data/7-05.png differ diff --git a/blog51-SuiAnalysis/data/7-06.png b/blog51-SuiAnalysis/data/7-06.png new file mode 100644 index 0000000..0bda9b5 Binary files /dev/null and b/blog51-SuiAnalysis/data/7-06.png differ diff --git a/blog51-SuiAnalysis/data/7-07.png b/blog51-SuiAnalysis/data/7-07.png new file mode 100644 index 0000000..c9e417d Binary files /dev/null and b/blog51-SuiAnalysis/data/7-07.png differ diff --git a/blog51-SuiAnalysis/data/7-08.png b/blog51-SuiAnalysis/data/7-08.png new file mode 100644 index 0000000..58904b2 Binary files /dev/null and b/blog51-SuiAnalysis/data/7-08.png differ diff --git a/blog51-SuiAnalysis/data/7-09.png b/blog51-SuiAnalysis/data/7-09.png new file mode 100644 index 0000000..5a34a7c Binary files /dev/null and b/blog51-SuiAnalysis/data/7-09.png differ diff --git a/blog51-SuiAnalysis/data/8-00.png b/blog51-SuiAnalysis/data/8-00.png new file mode 100644 index 0000000..bfb96f7 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-00.png differ diff --git a/blog51-SuiAnalysis/data/8-01.png b/blog51-SuiAnalysis/data/8-01.png new file mode 100644 index 0000000..d1da0d5 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-01.png differ diff --git a/blog51-SuiAnalysis/data/8-02.png b/blog51-SuiAnalysis/data/8-02.png new file mode 100644 index 0000000..d8b7ebd Binary files /dev/null and b/blog51-SuiAnalysis/data/8-02.png differ diff --git a/blog51-SuiAnalysis/data/8-03.png b/blog51-SuiAnalysis/data/8-03.png new file mode 100644 index 0000000..ded9795 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-03.png differ diff --git a/blog51-SuiAnalysis/data/8-04.png b/blog51-SuiAnalysis/data/8-04.png new file mode 100644 index 0000000..2f63082 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-04.png differ diff --git a/blog51-SuiAnalysis/data/8-05.png b/blog51-SuiAnalysis/data/8-05.png new file mode 100644 index 0000000..77dab97 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-05.png differ diff --git a/blog51-SuiAnalysis/data/8-06.png b/blog51-SuiAnalysis/data/8-06.png new file mode 100644 index 0000000..940c0e5 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-06.png differ diff --git a/blog51-SuiAnalysis/data/8-07.png b/blog51-SuiAnalysis/data/8-07.png new file mode 100644 index 0000000..151ce54 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-07.png differ diff --git a/blog51-SuiAnalysis/data/8-08.png b/blog51-SuiAnalysis/data/8-08.png new file mode 100644 index 0000000..0fea2aa Binary files /dev/null and b/blog51-SuiAnalysis/data/8-08.png differ diff --git a/blog51-SuiAnalysis/data/8-09.png b/blog51-SuiAnalysis/data/8-09.png new file mode 100644 index 0000000..d26e586 Binary files /dev/null and b/blog51-SuiAnalysis/data/8-09.png differ diff --git a/blog51-SuiAnalysis/data/9-00.png b/blog51-SuiAnalysis/data/9-00.png new file mode 100644 index 0000000..288ea55 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-00.png differ diff --git a/blog51-SuiAnalysis/data/9-01.png b/blog51-SuiAnalysis/data/9-01.png new file mode 100644 index 0000000..33fd118 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-01.png differ diff --git a/blog51-SuiAnalysis/data/9-02.png b/blog51-SuiAnalysis/data/9-02.png new file mode 100644 index 0000000..2065374 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-02.png differ diff --git a/blog51-SuiAnalysis/data/9-03.png b/blog51-SuiAnalysis/data/9-03.png new file mode 100644 index 0000000..539c993 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-03.png differ diff --git a/blog51-SuiAnalysis/data/9-04.png b/blog51-SuiAnalysis/data/9-04.png new file mode 100644 index 0000000..a26d7f3 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-04.png differ diff --git a/blog51-SuiAnalysis/data/9-05.png b/blog51-SuiAnalysis/data/9-05.png new file mode 100644 index 0000000..6254578 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-05.png differ diff --git a/blog51-SuiAnalysis/data/9-06.png b/blog51-SuiAnalysis/data/9-06.png new file mode 100644 index 0000000..b84df64 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-06.png differ diff --git a/blog51-SuiAnalysis/data/9-07.png b/blog51-SuiAnalysis/data/9-07.png new file mode 100644 index 0000000..c1b39b7 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-07.png differ diff --git a/blog51-SuiAnalysis/data/9-08.png b/blog51-SuiAnalysis/data/9-08.png new file mode 100644 index 0000000..72edd79 Binary files /dev/null and b/blog51-SuiAnalysis/data/9-08.png differ diff --git a/blog51-SuiAnalysis/data/9-09.png b/blog51-SuiAnalysis/data/9-09.png new file mode 100644 index 0000000..9f9417c Binary files /dev/null and b/blog51-SuiAnalysis/data/9-09.png differ diff --git a/blog51-SuiAnalysis/data/readme.txt b/blog51-SuiAnalysis/data/readme.txt new file mode 100644 index 0000000..be4b751 --- /dev/null +++ b/blog51-SuiAnalysis/data/readme.txt @@ -0,0 +1 @@ +原始图像文件 diff --git a/blog51-SuiAnalysis/final_data.rar b/blog51-SuiAnalysis/final_data.rar new file mode 100644 index 0000000..a0ff58c Binary files /dev/null and b/blog51-SuiAnalysis/final_data.rar differ diff --git "a/blog52-SuiAnalysis-ML/blog52_01_Image_nb\357\274\210\345\203\217\347\264\240\347\273\237\350\256\241\357\274\211.py" "b/blog52-SuiAnalysis-ML/blog52_01_Image_nb\357\274\210\345\203\217\347\264\240\347\273\237\350\256\241\357\274\211.py" new file mode 100644 index 0000000..2bf5e10 --- /dev/null +++ "b/blog52-SuiAnalysis-ML/blog52_01_Image_nb\357\274\210\345\203\217\347\264\240\347\273\237\350\256\241\357\274\211.py" @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +""" +By: Eastmount CSDN xiuzhang 2024-04-12 +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt +from sklearn.naive_bayes import BernoulliNB +from sklearn.model_selection import train_test_split +from sklearn.metrics import confusion_matrix, classification_report + +#----------------------------------------------------------------------- +#第一步 读取数据集并划分训练集 +X = [] #定义图像名称 +Y = [] #定义图像分类类标 +Z = [] #定义图像像素 + +#遍历文件夹读取图片 +for i in range(0, 12): + for f in os.listdir("final_data/%s" % i): + X.append("final_data//" +str(i) + "//" + str(f)) + Y.append(i) +X = np.array(X) +Y = np.array(Y) +print(X[:2]) + +X_train, X_test, y_train, y_test = train_test_split(X, Y, +test_size=0.3, random_state=1) +print(len(X_train), len(X_test), len(y_train), len(y_test)) +#3696 1584 3696 1584 + +#----------------------------------------------------------------------- +#第二步 图像读取及转换为像素直方图 +#训练集 +XX_train = [] +for i in X_train: + image = cv2.imread(i) + img = cv2.resize(image, (32,32), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_train.append(((hist/255).flatten())) + +#测试集 +XX_test = [] +for i in X_test: + image = cv2.imread(i) + img = cv2.resize(image, (32,32), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_test.append(((hist/255).flatten())) + +#----------------------------------------------------------------------- +#第三步 基于机器学习的图像分类处理 +clf = BernoulliNB().fit(XX_train, y_train) +predictions_labels = clf.predict(XX_test) +print('预测结果:') +print(predictions_labels) +print('算法评价:') +print(classification_report(y_test, predictions_labels,digits=4)) + +#输出前10张图片及预测结果 +k = 0 +while k<10: + print(X_test[k]) + image = cv2.imread(X_test[k]) + print(predictions_labels[k]) + cv2.imshow("img", image) + cv2.waitKey(0) + cv2.destroyAllWindows() + k = k + 1 diff --git a/blog52-SuiAnalysis-ML/blog52_02_Image_knn.py b/blog52-SuiAnalysis-ML/blog52_02_Image_knn.py new file mode 100644 index 0000000..6965a57 --- /dev/null +++ b/blog52-SuiAnalysis-ML/blog52_02_Image_knn.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +""" +By: Eastmount CSDN xiuzhang 2024-04-12 +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt +from sklearn.neighbors import KNeighborsClassifier +from sklearn.model_selection import train_test_split +from sklearn.metrics import confusion_matrix, classification_report + +#----------------------------------------------------------------------- +#第一步 读取数据集并划分训练集 +X = [] #定义图像名称 +Y = [] #定义图像分类类标 +Z = [] #定义图像像素 + +#遍历文件夹读取图片 +for i in range(0, 12): + for f in os.listdir("final_data/%s" % i): + X.append("final_data//" +str(i) + "//" + str(f)) + Y.append(i) +X = np.array(X) +Y = np.array(Y) +print(X[:2]) + +X_train, X_test, y_train, y_test = train_test_split(X, Y, +test_size=0.3, random_state=1) +print(len(X_train), len(X_test), len(y_train), len(y_test)) +#3696 1584 3696 1584 + +#----------------------------------------------------------------------- +#第二步 图像读取及转换为像素直方图 +#训练集 +XX_train = [] +for i in X_train: + image = cv2.imread(i) + img = cv2.resize(image, (32,32), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_train.append(((hist/255).flatten())) + +#测试集 +XX_test = [] +for i in X_test: + image = cv2.imread(i) + img = cv2.resize(image, (32,32), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_test.append(((hist/255).flatten())) + +#----------------------------------------------------------------------- +#第三步 基于机器学习的图像分类处理 +clf = KNeighborsClassifier(n_neighbors=3,algorithm='kd_tree') +clf.fit(XX_train, y_train) +predictions_labels = clf.predict(XX_test) +print('预测结果:') +print(predictions_labels) +print('算法评价:') +print(classification_report(y_test, predictions_labels,digits=4)) + +#输出前10张图片及预测结果 +k = 0 +while k<10: + print(X_test[k]) + image = cv2.imread(X_test[k]) + print(predictions_labels[k]) + cv2.imshow("img", image) + cv2.waitKey(0) + cv2.destroyAllWindows() + k = k + 1 + + diff --git a/blog52-SuiAnalysis-ML/blog52_03_Image_svm.py b/blog52-SuiAnalysis-ML/blog52_03_Image_svm.py new file mode 100644 index 0000000..1bcc025 --- /dev/null +++ b/blog52-SuiAnalysis-ML/blog52_03_Image_svm.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +""" +By: Eastmount CSDN xiuzhang 2024-04-12 +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt +from sklearn.svm import LinearSVC +from sklearn.model_selection import train_test_split +from sklearn.metrics import confusion_matrix, classification_report + +#----------------------------------------------------------------------- +#第一步 读取数据集并划分训练集 +X = [] #定义图像名称 +Y = [] #定义图像分类类标 +Z = [] #定义图像像素 + +#遍历文件夹读取图片 +for i in range(0, 12): + for f in os.listdir("final_data/%s" % i): + X.append("final_data//" +str(i) + "//" + str(f)) + Y.append(i) +X = np.array(X) +Y = np.array(Y) +print(X[:2]) + +X_train, X_test, y_train, y_test = train_test_split(X, Y, +test_size=0.3, random_state=1) +print(len(X_train), len(X_test), len(y_train), len(y_test)) +#3696 1584 3696 1584 + +#----------------------------------------------------------------------- +#第二步 图像读取及转换为像素直方图 +#训练集 +XX_train = [] +for i in X_train: + image = cv2.imread(i) + img = cv2.resize(image, (64,64), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_train.append(((hist/255).flatten())) + +#测试集 +XX_test = [] +for i in X_test: + image = cv2.imread(i) + img = cv2.resize(image, (64,64), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_test.append(((hist/255).flatten())) + +#----------------------------------------------------------------------- +#第三步 基于机器学习的图像分类处理 +clf = LinearSVC() +clf.fit(XX_train, y_train) +predictions_labels = clf.predict(XX_test) +print('预测结果:') +print(predictions_labels) +print('算法评价:') +print(classification_report(y_test, predictions_labels,digits=4)) + +#输出前10张图片及预测结果 +k = 0 +while k<10: + print(X_test[k]) + image = cv2.imread(X_test[k]) + print(predictions_labels[k]) + cv2.imshow("img", image) + cv2.waitKey(0) + cv2.destroyAllWindows() + k = k + 1 + + diff --git a/blog52-SuiAnalysis-ML/blog52_04_Image_lr.py b/blog52-SuiAnalysis-ML/blog52_04_Image_lr.py new file mode 100644 index 0000000..65a171f --- /dev/null +++ b/blog52-SuiAnalysis-ML/blog52_04_Image_lr.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +""" +By: Eastmount CSDN xiuzhang 2024-04-12 +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt +from sklearn.linear_model import LogisticRegression +from sklearn.model_selection import train_test_split +from sklearn.metrics import confusion_matrix, classification_report + +#----------------------------------------------------------------------- +#第一步 读取数据集并划分训练集 +X = [] #定义图像名称 +Y = [] #定义图像分类类标 +Z = [] #定义图像像素 + +#遍历文件夹读取图片 +for i in range(0, 12): + for f in os.listdir("final_data/%s" % i): + X.append("final_data//" +str(i) + "//" + str(f)) + Y.append(i) +X = np.array(X) +Y = np.array(Y) +print(X[:2]) + +X_train, X_test, y_train, y_test = train_test_split(X, Y, +test_size=0.3, random_state=1) +print(len(X_train), len(X_test), len(y_train), len(y_test)) +#3696 1584 3696 1584 + +#----------------------------------------------------------------------- +#第二步 图像读取及转换为像素直方图 +#训练集 +XX_train = [] +for i in X_train: + image = cv2.imread(i) + img = cv2.resize(image, (64,64), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_train.append(((hist/255).flatten())) + +#测试集 +XX_test = [] +for i in X_test: + image = cv2.imread(i) + img = cv2.resize(image, (64,64), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_test.append(((hist/255).flatten())) + +#----------------------------------------------------------------------- +#第三步 基于机器学习的图像分类处理 +clf = LogisticRegression(C=100.0,random_state=1) +clf.fit(XX_train, y_train) +predictions_labels = clf.predict(XX_test) +print('预测结果:') +print(predictions_labels) +print('算法评价:') +print(classification_report(y_test, predictions_labels,digits=4)) + +#输出前10张图片及预测结果 +k = 0 +while k<10: + print(X_test[k]) + image = cv2.imread(X_test[k]) + print(predictions_labels[k]) + cv2.imshow("img", image) + cv2.waitKey(0) + cv2.destroyAllWindows() + k = k + 1 + + diff --git a/blog52-SuiAnalysis-ML/blog52_05_Image_rf.py b/blog52-SuiAnalysis-ML/blog52_05_Image_rf.py new file mode 100644 index 0000000..074ec12 --- /dev/null +++ b/blog52-SuiAnalysis-ML/blog52_05_Image_rf.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +""" +By: Eastmount CSDN xiuzhang 2024-04-12 +""" +import os +import cv2 +import numpy as np +import matplotlib.pyplot as plt +from sklearn.ensemble import RandomForestClassifier +from sklearn.model_selection import train_test_split +from sklearn.metrics import confusion_matrix, classification_report + +#----------------------------------------------------------------------- +#第一步 读取数据集并划分训练集 +X = [] #定义图像名称 +Y = [] #定义图像分类类标 +Z = [] #定义图像像素 + +#遍历文件夹读取图片 +for i in range(0, 12): + for f in os.listdir("final_data/%s" % i): + X.append("final_data//" +str(i) + "//" + str(f)) + Y.append(i) +X = np.array(X) +Y = np.array(Y) +print(X[:2]) + +X_train, X_test, y_train, y_test = train_test_split(X, Y, +test_size=0.3, random_state=1) +print(len(X_train), len(X_test), len(y_train), len(y_test)) +#3696 1584 3696 1584 + +#----------------------------------------------------------------------- +#第二步 图像读取及转换为像素直方图 +#训练集 +XX_train = [] +for i in X_train: + image = cv2.imread(i) + img = cv2.resize(image, (128,128), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_train.append(((hist/255).flatten())) + +#测试集 +XX_test = [] +for i in X_test: + image = cv2.imread(i) + img = cv2.resize(image, (128,128), + interpolation=cv2.INTER_CUBIC) + hist = cv2.calcHist([img], [0,1], None, + [256,256], [0.0,255.0,0.0,255.0]) + XX_test.append(((hist/255).flatten())) + +#----------------------------------------------------------------------- +#第三步 基于机器学习的图像分类处理 +clf = RandomForestClassifier(criterion='gini', + n_estimators=11, + random_state=1, + n_jobs=2, + verbose=1) +clf.fit(XX_train, y_train) +predictions_labels = clf.predict(XX_test) +print('预测结果:') +print(predictions_labels) +print('算法评价:') +print(classification_report(y_test, predictions_labels,digits=4)) + +#输出前10张图片及预测结果 +k = 0 +while k<10: + print(X_test[k]) + image = cv2.imread(X_test[k]) + print(predictions_labels[k]) + cv2.imshow("img", image) + cv2.waitKey(0) + cv2.destroyAllWindows() + k = k + 1 + + diff --git a/blog52-SuiAnalysis-ML/data/0-00.png b/blog52-SuiAnalysis-ML/data/0-00.png new file mode 100644 index 0000000..2d9bac5 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-01.png b/blog52-SuiAnalysis-ML/data/0-01.png new file mode 100644 index 0000000..029fa03 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-02.png b/blog52-SuiAnalysis-ML/data/0-02.png new file mode 100644 index 0000000..c7c0c80 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-03.png b/blog52-SuiAnalysis-ML/data/0-03.png new file mode 100644 index 0000000..721b2d9 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-04.png b/blog52-SuiAnalysis-ML/data/0-04.png new file mode 100644 index 0000000..cb69685 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-05.png b/blog52-SuiAnalysis-ML/data/0-05.png new file mode 100644 index 0000000..5dc9777 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-06.png b/blog52-SuiAnalysis-ML/data/0-06.png new file mode 100644 index 0000000..7fb89f9 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-07.png b/blog52-SuiAnalysis-ML/data/0-07.png new file mode 100644 index 0000000..aa73f0d Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-08.png b/blog52-SuiAnalysis-ML/data/0-08.png new file mode 100644 index 0000000..27a73cf Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/0-09.png b/blog52-SuiAnalysis-ML/data/0-09.png new file mode 100644 index 0000000..106b278 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/0-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-00.png b/blog52-SuiAnalysis-ML/data/1-00.png new file mode 100644 index 0000000..b840920 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-01.png b/blog52-SuiAnalysis-ML/data/1-01.png new file mode 100644 index 0000000..509be8f Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-02.png b/blog52-SuiAnalysis-ML/data/1-02.png new file mode 100644 index 0000000..8253780 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-03.png b/blog52-SuiAnalysis-ML/data/1-03.png new file mode 100644 index 0000000..04b39c9 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-04.png b/blog52-SuiAnalysis-ML/data/1-04.png new file mode 100644 index 0000000..eafb14f Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-05.png b/blog52-SuiAnalysis-ML/data/1-05.png new file mode 100644 index 0000000..ea5c2f0 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-06.png b/blog52-SuiAnalysis-ML/data/1-06.png new file mode 100644 index 0000000..9253451 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-07.png b/blog52-SuiAnalysis-ML/data/1-07.png new file mode 100644 index 0000000..e383e84 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-08.png b/blog52-SuiAnalysis-ML/data/1-08.png new file mode 100644 index 0000000..fb62b1a Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/1-09.png b/blog52-SuiAnalysis-ML/data/1-09.png new file mode 100644 index 0000000..20fcae2 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/1-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-00.png b/blog52-SuiAnalysis-ML/data/10-00.png new file mode 100644 index 0000000..b545925 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-01.png b/blog52-SuiAnalysis-ML/data/10-01.png new file mode 100644 index 0000000..dfa2ad4 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-02.png b/blog52-SuiAnalysis-ML/data/10-02.png new file mode 100644 index 0000000..53094fb Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-03.png b/blog52-SuiAnalysis-ML/data/10-03.png new file mode 100644 index 0000000..d1cb7a2 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-04.png b/blog52-SuiAnalysis-ML/data/10-04.png new file mode 100644 index 0000000..10a5e92 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-05.png b/blog52-SuiAnalysis-ML/data/10-05.png new file mode 100644 index 0000000..54a8f28 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-06.png b/blog52-SuiAnalysis-ML/data/10-06.png new file mode 100644 index 0000000..365893d Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-07.png b/blog52-SuiAnalysis-ML/data/10-07.png new file mode 100644 index 0000000..3732f8e Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-08.png b/blog52-SuiAnalysis-ML/data/10-08.png new file mode 100644 index 0000000..64d0f00 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/10-09.png b/blog52-SuiAnalysis-ML/data/10-09.png new file mode 100644 index 0000000..6e36516 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/10-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-00.png b/blog52-SuiAnalysis-ML/data/11-00.png new file mode 100644 index 0000000..07caae3 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-01.png b/blog52-SuiAnalysis-ML/data/11-01.png new file mode 100644 index 0000000..4376fb2 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-02.png b/blog52-SuiAnalysis-ML/data/11-02.png new file mode 100644 index 0000000..c7db0ea Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-03.png b/blog52-SuiAnalysis-ML/data/11-03.png new file mode 100644 index 0000000..8312dfb Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-04.png b/blog52-SuiAnalysis-ML/data/11-04.png new file mode 100644 index 0000000..cd1e26d Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-05.png b/blog52-SuiAnalysis-ML/data/11-05.png new file mode 100644 index 0000000..6dbbca3 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-06.png b/blog52-SuiAnalysis-ML/data/11-06.png new file mode 100644 index 0000000..e46a91b Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-07.png b/blog52-SuiAnalysis-ML/data/11-07.png new file mode 100644 index 0000000..4d5a911 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-08.png b/blog52-SuiAnalysis-ML/data/11-08.png new file mode 100644 index 0000000..5bd347c Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/11-09.png b/blog52-SuiAnalysis-ML/data/11-09.png new file mode 100644 index 0000000..10cca94 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/11-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-00.png b/blog52-SuiAnalysis-ML/data/2-00.png new file mode 100644 index 0000000..65d9840 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-01.png b/blog52-SuiAnalysis-ML/data/2-01.png new file mode 100644 index 0000000..a6a4bc0 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-02.png b/blog52-SuiAnalysis-ML/data/2-02.png new file mode 100644 index 0000000..8c7bf78 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-03.png b/blog52-SuiAnalysis-ML/data/2-03.png new file mode 100644 index 0000000..922a96c Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-04.png b/blog52-SuiAnalysis-ML/data/2-04.png new file mode 100644 index 0000000..cf42afa Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-05.png b/blog52-SuiAnalysis-ML/data/2-05.png new file mode 100644 index 0000000..af8626e Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-06.png b/blog52-SuiAnalysis-ML/data/2-06.png new file mode 100644 index 0000000..e289205 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-07.png b/blog52-SuiAnalysis-ML/data/2-07.png new file mode 100644 index 0000000..2c5a9e2 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-08.png b/blog52-SuiAnalysis-ML/data/2-08.png new file mode 100644 index 0000000..a5ca059 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/2-09.png b/blog52-SuiAnalysis-ML/data/2-09.png new file mode 100644 index 0000000..bcfe476 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/2-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-00.png b/blog52-SuiAnalysis-ML/data/3-00.png new file mode 100644 index 0000000..09bf3e2 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-01.png b/blog52-SuiAnalysis-ML/data/3-01.png new file mode 100644 index 0000000..4c5a535 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-02.png b/blog52-SuiAnalysis-ML/data/3-02.png new file mode 100644 index 0000000..84fd78e Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-03.png b/blog52-SuiAnalysis-ML/data/3-03.png new file mode 100644 index 0000000..8ffe9d6 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-04.png b/blog52-SuiAnalysis-ML/data/3-04.png new file mode 100644 index 0000000..1e1cd01 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-05.png b/blog52-SuiAnalysis-ML/data/3-05.png new file mode 100644 index 0000000..f6c8fb7 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-06.png b/blog52-SuiAnalysis-ML/data/3-06.png new file mode 100644 index 0000000..0b5da34 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-07.png b/blog52-SuiAnalysis-ML/data/3-07.png new file mode 100644 index 0000000..a4814c9 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-08.png b/blog52-SuiAnalysis-ML/data/3-08.png new file mode 100644 index 0000000..3c5f386 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/3-09.png b/blog52-SuiAnalysis-ML/data/3-09.png new file mode 100644 index 0000000..56cc6a4 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/3-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-00.png b/blog52-SuiAnalysis-ML/data/4-00.png new file mode 100644 index 0000000..82aae08 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-01.png b/blog52-SuiAnalysis-ML/data/4-01.png new file mode 100644 index 0000000..3c83e81 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-02.png b/blog52-SuiAnalysis-ML/data/4-02.png new file mode 100644 index 0000000..4e5120c Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-03.png b/blog52-SuiAnalysis-ML/data/4-03.png new file mode 100644 index 0000000..a4154a7 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-04.png b/blog52-SuiAnalysis-ML/data/4-04.png new file mode 100644 index 0000000..9f94e56 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-05.png b/blog52-SuiAnalysis-ML/data/4-05.png new file mode 100644 index 0000000..60cb466 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-06.png b/blog52-SuiAnalysis-ML/data/4-06.png new file mode 100644 index 0000000..dbd9a6b Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-07.png b/blog52-SuiAnalysis-ML/data/4-07.png new file mode 100644 index 0000000..ac17d55 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-08.png b/blog52-SuiAnalysis-ML/data/4-08.png new file mode 100644 index 0000000..13875a8 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/4-09.png b/blog52-SuiAnalysis-ML/data/4-09.png new file mode 100644 index 0000000..ea9d6e0 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/4-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-00.png b/blog52-SuiAnalysis-ML/data/5-00.png new file mode 100644 index 0000000..c01923b Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-01.png b/blog52-SuiAnalysis-ML/data/5-01.png new file mode 100644 index 0000000..79f9845 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-02.png b/blog52-SuiAnalysis-ML/data/5-02.png new file mode 100644 index 0000000..a35888a Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-03.png b/blog52-SuiAnalysis-ML/data/5-03.png new file mode 100644 index 0000000..d62ee1b Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-04.png b/blog52-SuiAnalysis-ML/data/5-04.png new file mode 100644 index 0000000..cebb7bc Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-05.png b/blog52-SuiAnalysis-ML/data/5-05.png new file mode 100644 index 0000000..56df85a Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-06.png b/blog52-SuiAnalysis-ML/data/5-06.png new file mode 100644 index 0000000..a25c872 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-07.png b/blog52-SuiAnalysis-ML/data/5-07.png new file mode 100644 index 0000000..1f3c6bb Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-08.png b/blog52-SuiAnalysis-ML/data/5-08.png new file mode 100644 index 0000000..6ea10c4 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/5-09.png b/blog52-SuiAnalysis-ML/data/5-09.png new file mode 100644 index 0000000..17ccd95 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/5-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-00.png b/blog52-SuiAnalysis-ML/data/6-00.png new file mode 100644 index 0000000..b406408 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-01.png b/blog52-SuiAnalysis-ML/data/6-01.png new file mode 100644 index 0000000..efadecc Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-02.png b/blog52-SuiAnalysis-ML/data/6-02.png new file mode 100644 index 0000000..d967419 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-03.png b/blog52-SuiAnalysis-ML/data/6-03.png new file mode 100644 index 0000000..60c8022 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-04.png b/blog52-SuiAnalysis-ML/data/6-04.png new file mode 100644 index 0000000..2451612 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-05.png b/blog52-SuiAnalysis-ML/data/6-05.png new file mode 100644 index 0000000..7fdaf32 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-06.png b/blog52-SuiAnalysis-ML/data/6-06.png new file mode 100644 index 0000000..b5067b7 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-07.png b/blog52-SuiAnalysis-ML/data/6-07.png new file mode 100644 index 0000000..516d1ba Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-08.png b/blog52-SuiAnalysis-ML/data/6-08.png new file mode 100644 index 0000000..5d53c4a Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/6-09.png b/blog52-SuiAnalysis-ML/data/6-09.png new file mode 100644 index 0000000..e4288af Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/6-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-00.png b/blog52-SuiAnalysis-ML/data/7-00.png new file mode 100644 index 0000000..b6348e9 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-01.png b/blog52-SuiAnalysis-ML/data/7-01.png new file mode 100644 index 0000000..4ee9dba Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-02.png b/blog52-SuiAnalysis-ML/data/7-02.png new file mode 100644 index 0000000..c209997 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-03.png b/blog52-SuiAnalysis-ML/data/7-03.png new file mode 100644 index 0000000..0f0165a Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-04.png b/blog52-SuiAnalysis-ML/data/7-04.png new file mode 100644 index 0000000..214bc0f Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-05.png b/blog52-SuiAnalysis-ML/data/7-05.png new file mode 100644 index 0000000..8ed944d Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-06.png b/blog52-SuiAnalysis-ML/data/7-06.png new file mode 100644 index 0000000..0bda9b5 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-07.png b/blog52-SuiAnalysis-ML/data/7-07.png new file mode 100644 index 0000000..c9e417d Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-08.png b/blog52-SuiAnalysis-ML/data/7-08.png new file mode 100644 index 0000000..58904b2 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/7-09.png b/blog52-SuiAnalysis-ML/data/7-09.png new file mode 100644 index 0000000..5a34a7c Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/7-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-00.png b/blog52-SuiAnalysis-ML/data/8-00.png new file mode 100644 index 0000000..bfb96f7 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-01.png b/blog52-SuiAnalysis-ML/data/8-01.png new file mode 100644 index 0000000..d1da0d5 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-02.png b/blog52-SuiAnalysis-ML/data/8-02.png new file mode 100644 index 0000000..d8b7ebd Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-03.png b/blog52-SuiAnalysis-ML/data/8-03.png new file mode 100644 index 0000000..ded9795 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-04.png b/blog52-SuiAnalysis-ML/data/8-04.png new file mode 100644 index 0000000..2f63082 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-05.png b/blog52-SuiAnalysis-ML/data/8-05.png new file mode 100644 index 0000000..77dab97 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-06.png b/blog52-SuiAnalysis-ML/data/8-06.png new file mode 100644 index 0000000..940c0e5 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-07.png b/blog52-SuiAnalysis-ML/data/8-07.png new file mode 100644 index 0000000..151ce54 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-08.png b/blog52-SuiAnalysis-ML/data/8-08.png new file mode 100644 index 0000000..0fea2aa Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/8-09.png b/blog52-SuiAnalysis-ML/data/8-09.png new file mode 100644 index 0000000..d26e586 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/8-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-00.png b/blog52-SuiAnalysis-ML/data/9-00.png new file mode 100644 index 0000000..288ea55 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-00.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-01.png b/blog52-SuiAnalysis-ML/data/9-01.png new file mode 100644 index 0000000..33fd118 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-01.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-02.png b/blog52-SuiAnalysis-ML/data/9-02.png new file mode 100644 index 0000000..2065374 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-02.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-03.png b/blog52-SuiAnalysis-ML/data/9-03.png new file mode 100644 index 0000000..539c993 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-03.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-04.png b/blog52-SuiAnalysis-ML/data/9-04.png new file mode 100644 index 0000000..a26d7f3 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-04.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-05.png b/blog52-SuiAnalysis-ML/data/9-05.png new file mode 100644 index 0000000..6254578 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-05.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-06.png b/blog52-SuiAnalysis-ML/data/9-06.png new file mode 100644 index 0000000..b84df64 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-06.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-07.png b/blog52-SuiAnalysis-ML/data/9-07.png new file mode 100644 index 0000000..c1b39b7 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-07.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-08.png b/blog52-SuiAnalysis-ML/data/9-08.png new file mode 100644 index 0000000..72edd79 Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-08.png differ diff --git a/blog52-SuiAnalysis-ML/data/9-09.png b/blog52-SuiAnalysis-ML/data/9-09.png new file mode 100644 index 0000000..9f9417c Binary files /dev/null and b/blog52-SuiAnalysis-ML/data/9-09.png differ diff --git a/blog52-SuiAnalysis-ML/data/readme.txt b/blog52-SuiAnalysis-ML/data/readme.txt new file mode 100644 index 0000000..756e693 --- /dev/null +++ b/blog52-SuiAnalysis-ML/data/readme.txt @@ -0,0 +1 @@ +原始水书数据集。