日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据

發(fā)布時間:2025/3/12 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

算開個頭,不算特別實戰(zhàn)

掃描電子顯微鏡,材料開發(fā)不可缺少的分析儀器。原理就不詳述了。材料的形貌,具體長什么樣的都可以看得很清楚。

材料表面的形貌很多情況下會和材料的物性產(chǎn)生直接關(guān)系,比如說可以從SEM看出粒子的直徑分布,多孔材料的孔徑等等。孔徑這個就很直接了,孔徑越小,材料的表面積越大,有可能相對的化學(xué)活性比如說氣體的吸收能力會更大。

所以,有可能可以利用SEM作為材料的描述符X,建立模型來預(yù)測有關(guān)的物性?現(xiàn)在手邊沒有這樣子的數(shù)據(jù),但是覺得可能這方面的先行研究應(yīng)該有一些吧。之前曾經(jīng)有提到一塊錢買中巴:機器學(xué)習(xí)在材料方向的應(yīng)用(lightgbm+貝葉斯優(yōu)化調(diào)參)?zhuanlan.zhihu.com

可以用組成來預(yù)測物性。在這里,如果我們有組成,加上圖像數(shù)據(jù),應(yīng)該可以得到更高的精度??可惜好像還沒有系統(tǒng)性的數(shù)據(jù)

python有skimage這個包可以對材料進行一些預(yù)處理。對于材料的SEM也可以進行一些有意思的操作。哈佛大學(xué)有一個很簡單的SEM的數(shù)據(jù)庫,里面有四種材料的SEM圖,但是好像沒有標(biāo)記,然后每種材料的樣本也不大就四張圖。可以在下面的地址下載https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/HVBW0Q#__sid=js0?dataverse.harvard.edu

首先對數(shù)據(jù)進行讀取。這里我選擇的是兩張多孔粒子的圖像

from skimage.io import imread

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

from pathlib import Path

import numpy as np

%matplotlib inline

plt.rcParams["figure.figsize"] = (8, 8)

plt.rcParams["figure.dpi"] = 150

plt.rcParams["font.size"] = 14

plt.rcParams['font.family'] = ['sans-serif']

plt.rcParams['font.sans-serif'] = ['DejaVu Sans']

plt.style.use('ggplot')

sns.set_style("whitegrid", {'axes.grid': False})

imgg=imread('...../archive/3dsem/Pollen1001.jpg')

fig = plt.plot(figsize=(3, 3))

plt.imshow(imgg)

多孔材料嘛。有密集恐懼癥的同學(xué)對不住了。這里修改一下選項as_gray可以使得圖片變成更加鮮明的樣子。讀取了兩張圖,其中一張長這樣

imgg=imread('/Users/yweilin/Desktop/study/code/archive/3dsem/Pollen1001.jpg', as_gray=True)

imgg2=imread('/Users/yweilin/Desktop/study/code/archive/3dsem/Pollen1002.jpg', as_gray=True)

fig = plt.plot(figsize=(3, 3))

plt.imshow(imgg)

這個圖下面有具體的拍照時間比例尺什么資料,我們可以把這一塊鋸掉。實際上讀取這個數(shù)據(jù)之后,這是一個像素的矩陣,把對應(yīng)坐標(biāo)部分的數(shù)據(jù)去掉就可以了。

fig = plt.plot(figsize=(3, 3))

plt.imshow(imgg[:-100])

接下來我們可以對圖片進行特征點提取

特征點是圖像處理中,特征點指的是圖像灰度值發(fā)生劇烈變化的點或者在圖像邊緣上曲率較大的點(即兩個邊緣的交點)。

百度百科里這樣定義的。這里的特征點則可以反應(yīng)出一些孔的有關(guān)信息。這個很重要因為之前也說了會對物性產(chǎn)生影響。

from skimage.feature import corner_harris, corner_peaks, ORB

descriptor_extractor = ORB(n_keypoints=1000)

def extract_points(in_img):

descriptor_extractor.detect_and_extract(in_img)

return {'keypoints': descriptor_extractor.keypoints,

'descriptors': descriptor_extractor.descriptors}

extracted_image=extract_points(imgg[:-100])

extracted_image2=extract_points(imgg2[:-100])

特征點可視化之后是這樣的。注意一下這里的特征點圖是90度翻轉(zhuǎn)過的。

fig = plt.plot(figsize=(3, 3))

plt.plot(extracted_image['keypoints'][:, 0],

extracted_image['keypoints'][:, 1],

'.',)

# plt.plot(extracted_image2['keypoints'][:, 0],

# extracted_image2['keypoints'][:, 1],

# '.',)

這里imgg2是二號圖像,與一號圖像相比似乎別無兩樣。

對照一號圖片的特征點可以看出似乎還是有一些不同之處的。

fig = plt.plot(figsize=(3, 3))

plt.plot(extracted_image['keypoints'][:, 0],

extracted_image['keypoints'][:, 1],

'.',)

plt.plot(extracted_image2['keypoints'][:, 0],

extracted_image2['keypoints'][:, 1],

'.',)

特征點和特征點之間出現(xiàn)了一定程度的偏移。將特征點投影到原圖,可以進一步觀察對應(yīng)信息

from skimage.feature import match_descriptors, plot_matches

c_matches = match_descriptors(extracted_image['descriptors'],extracted_image2['descriptors'], cross_check=True)

fig = plt.plot(figsize=(3, 3))

plot_matches(plt,

imgg[:-100], imgg2[:-100],

extracted_image['keypoints'], extracted_image2['keypoints'],

c_matches)

可以觀察到提取的特征點分布在孔的附近。具體看一下兩張圖的特征點之間的距離以及分布

dist_list=[]

for i, (c_idx, n_idx) in enumerate(c_matches):

x_vec = [extracted_image['keypoints'][c_idx, 0], extracted_image2['keypoints'][n_idx, 0]]

y_vec = [extracted_image['keypoints'][c_idx, 1], extracted_image2['keypoints'][n_idx, 1]]

dist = np.sqrt(np.square(np.diff(x_vec))+np.square(np.diff(y_vec)))[0]

dist_list.append(dist)

dist_list_df=pd.DataFrame(dist_list,columns=['distance'])

dist_list_df.hist(figsize=(5, 5))

這兩張圖之間的大部分圖還是匹配的。接下來看一看距離在100以上的有點異常的特征點

outlier=[]

outlier_index=[]

for x in dist_list:

if x > 100:

outlier.append(x)

outlier_index.append(dist_list.index(x))

fig = plt.plot(figsize=(3, 3))

plt.plot(extracted_image['keypoints'][:, 0][outlier_index],

extracted_image['keypoints'][:, 1][outlier_index],

'.',)

plt.plot(extracted_image2['keypoints'][:, 0][outlier_index],

extracted_image2['keypoints'][:, 1][outlier_index],

'.',)

還是可接受的吧。可能因為亮度什么的或許有些不同?https://github.com/onecoinbuybus/chemoinformatics/blob/master/matinfo.ipynb?github.com

參考了kaggle看到的文章https://www.kaggle.com/kmader/3dsem-a-dataset-for-3d-sem-surface-reconstruction?www.kaggle.com

總結(jié)

以上是生活随笔為你收集整理的sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。