小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

一鍵自動提取實驗曲線數(shù)據(jù) | FigureGet

 漢無為 2022-03-30

圖片

FigureGet

今天發(fā)布一款新的科研工具FigureGet,用于 自動 提取實驗數(shù)據(jù)點;

圖片

圖片為了寫成這個軟件(的雛形),圖圖在過去的幾周里嘗試了各種算法(與參數(shù))的組合,其中目前的版本主要包括濾波算法和霍夫檢測。如果你恰好比較了解這方面的內(nèi)容,那么應該可以下載代碼進行靈活的改進;如果你是小白也沒關系,后續(xù)會在B站“圖通道”發(fā)布詳細的原理和代碼編寫介紹(視頻)。

回顧Grabit

在正式展示FigureGet之前,先來看看圖通道的第一個視頻:

'利用MATLAB提取實驗數(shù)據(jù)點'

圖片

聰明的小伙伴會發(fā)現(xiàn)與本期內(nèi)容相比少了自動兩個字。

在第一個視頻里介紹了一個小程序grabit,它能夠基于標定好的坐標尺,根據(jù)手動采集的點生成實驗數(shù)據(jù)。雖然是英文界面,但是操作步驟簡單,邏輯也很清晰,但總感覺少了點什么——圖圖在采點的時候手會抖,而且也無法均勻的采點;最要命的時候當波形復雜時候幾乎是不可能采集到真實數(shù)據(jù)...避免“手采”便成了當務之急。

圖片

當然grabit也有其適用場景,比如計算機視覺技術無法識別的時候,人眼+grabit的結(jié)合能幫你采集到需要的數(shù)據(jù)。

grabit鏈接及下載:https://www.bilibili.com/video/BV155411Y7J5

FigureGet運行原理

下面我以下方這張圖(百度圖片隨便截取的)為例介紹一下主要的操作邏輯,暫時的GUI界面一共只有五個(組)按鈕,非常簡單。

圖片
圖片
FG 1.0

1 加載

點擊右上角按鈕加載需要處理的圖片。

關于圖片做一下簡單說明:當前的版本并非基于線條的顏色進行數(shù)據(jù)提取,所以顏色是不重要的,如果你有多根顏色不一樣的線條,建議先采用PhotoShop的魔棒工具提取出單根曲線,或者自行編寫代碼提取也無妨,這個部分并不復雜,因此沒有納入到軟件代碼中??傊M量采用圖像軟件將不必要的細節(jié)去除,保留目標曲線。


下方的操作無嚴格順序,但建議俺演示的順序進行。

2 標定

在右上角面板中輸入圖片坐標軸的極值,這個值將作為最終曲線實際數(shù)據(jù)計算的依據(jù),如果標定錯誤并不會影響曲線的形狀,但是會影響比例,因此盡量準確!

圖片

3 切割

切割時會標定四個點,它們依次決定Xmin,Xmax,Ymin,Ymax對應的像素位置,也就是說,切割后形成的圖像中的點與2中標定好的坐標區(qū)的中的點一一對應!為了避免混淆,2&3中的點請全部選擇坐標框的角點位置。

圖片

4 直線檢測

這一步是針對具有網(wǎng)格線的坐標軸自動去除網(wǎng)格線,主要用到的就是霍夫變換了,有一些Hough參數(shù)沒有寫在GUI中,在deleteLine.m代碼里可以調(diào)整:

圖片

寫在界面的參數(shù)(直線檢測對應的參數(shù),右上角)用于控制刪除直線的范圍!

對于網(wǎng)格線比較清晰的圖,效果還是很好的。

圖片
霍夫變換原理:https://www.bilibili.com/video/BV1xo4y1X7mz

5 橡皮擦

橡皮擦就是一個簡單的圖像處理方法了,主要用于清理圖片上的多余內(nèi)容,為下一步的曲線提取做準備。

圖片

橡皮擦的大小由像素控制,因為暫時沒有做撤回功能,請從小到大選用,GUI左上角會給出整個圖片的像素值作為相對參考。

圖片

在橡皮擦這一步完成全部的幾何清理,尤其要保證邊界的干凈與整潔;有限的間斷點并沒有關系。

圖片

6 識別

最后一步識別的會依次采用:

·邊緣檢測(二值化的一種方法)·降低采樣頻率·濾波·(擬合)

來盡可能的還原原始圖像,或者逼近原始圖像但是濾掉細節(jié),在界面中設置了兩個主要參數(shù)以供可視化的調(diào)節(jié),其它內(nèi)容可以在simpleLine.m代碼中進行調(diào)節(jié)。

圖片
邊緣檢測-降采樣-濾波-...

simpleLine.m的部分內(nèi)容

% 二值化圖像% ———————————————————————————————————————subplot(222)thresh = 0.9; %將thresh以下的像素都變成黑色!BW = im2bw(RGB,thresh); BW = 1-edge(rgb2gray(RGB),'canny',0.5);imshow(BW)ax = gca;axis onhold onH = size(BW,2);V = size(BW,1);index = linspace(1,V,V)';flag = repmat(index,1,H).*(1-BW); % 計算黑色像素點的坐標x = 1:H;y = sum(flag,1)./(V-sum(BW,1)); % 分母有可能為0,結(jié)果NaNx(isnan(y)) = [];y(isnan(y)) = [];plot(x,y,'y','LineWidth',1)hold off% 坐標轉(zhuǎn)換% ———————————————————————————————————————subplot(223)z = ax.YLim(2)-y+ax.YLim(1);h = plot(x,z,'k','LineWidth',1);hold off% 濾波與重采樣% ———————————————————————————————————————subplot(224)z = ax.YLim(2)-y+ax.YLim(1);h = plot(x,z,'k:','LineWidth',1);hold on% 等距降采樣index = int32(linspace(1,length(x),fix(length(x)/step)));x = x(index);z = z(index);% 濾波作用z_filted = smoothdata(z,'gaussian',windowSize);z_filted(1) = z(1); % 第一點不濾波z_filted(end) = z(end); % 最后一點不濾波

7 結(jié)果

最終會得到提取好的數(shù)據(jù)結(jié)果,XY坐標數(shù)據(jù)會同步導出到工作區(qū),你可以后續(xù)單獨二次加工。

圖片
圖片

通過提取參數(shù)的不同可以得到不同形式的曲線

圖片

這是我們最后得到的曲線

圖片

以上的內(nèi)容展示了整個的工作流程,涉及到的操作有點多,也并沒有展開講每一部分的原理,大家拿到代碼后可以先運行并且讀一下各個部分的代碼,而后進行深度定制。這個軟件目前肯定有其不足之處與適用場景,除了提取數(shù)據(jù)之外,更希望大家能從源碼與流程中掌握一些圖像/數(shù)據(jù)處理的方式。

后續(xù)會在B站更新一遍詳細的視頻操作流程,并詳細介紹每個模塊是如何編寫的。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多