關於麟仔所寫的程式

請教麟仔你在http://www.labview.com.tw/forum/forum_posts.asp?TID=2313&KW=%C5%EF%A5J所寫的影像分割程式(九格的那ㄧ個),我照著寫了一次結果不能執行不知道是哪裏寫錯了,想請你幫我看一下.影像分割.vi 圖片檔案.rar

![](upload://aa7jrpMJzugpCUK94BTopcJr9mH.png)

或是可否可以請你將完成的程式上傳上來呢

還有一些問題想請你解答

我現在要做的是使用CCD取得灰階的圖片(自己製作的字卡),將圖片做影像處理的動作(二值化,定位,濾波等等)然後結合OCR完成文字辨識

1.在你所寫的影像分割程式裡重建後之圖像是黑紅的,可否把圖片變成黑白的

2.將影像分成9格後是否可以一格一格做特徵擷取,然後再結合OCR完成文字辨識以提高辨識率(該如何做呢?)

3.關於我所要做的題目,請您提供一點意見該如何著手

附上我的E-mail:[email protected]

希望您能回答我的問題,或給我一點意見    謝謝!

sorry!我並沒有寫完整

我現在要做的是使用CCD取得灰階的圖片(自己製作的字卡),將圖片做影像處理的動作(二值化,定位,濾波等等)然後結合OCR完成文字辨識,在與motion程式結合驅動機械手臂將自寫出.現在又有一個問題文字的軌跡座標該怎麼定呢?請知道的前輩可以教導一下.謝謝

OK !! 但是你的程式我無法開啟,我是7.0版的,能否轉成7.0版的!!?? Sorry!!

1.由你的程式錯誤訊息來看,應該是Read Image的vi產生問題,你確定你的影像路徑設定正確嗎? 或是你的影像格式不是jpg或bmp檔??

2. 關於"在你所寫的影像分割程式裡重建後之圖像是黑紅的,可否把圖片變成黑白的" 問題,答案是可以的,你只要在Threshold vi的 replace value設定為 "255"即可!!

3. 關於 "將影像分成9格後是否可以一格一格做特徵擷取,然後再結合OCR完成文字辨識以提高辨識率" 問題, 是可行的!!

4. 關於你要實現的功能,與motion的整合,你可能需要用到影像定位的相關程式,例如將任意尺寸的影像,全部映射到相同的座標系....這樣才可以完成你的功能!!

我會盡力幫助你,也請您不吝賜教!!

1.sorry!我是使用8.0,所以我只能夠轉成7.1,所以請各位前輩能用7.1幫我把我所上傳的程式轉成7.0謝謝,或者我再另外想辦法.影像分割.vi文字辨識2 Folder.rar1231.vi

2.我所使用的圖片為tif檔,我把它存成jpg檔再執行,結果還是一樣發生錯誤,我比對了程式方塊圖,發現在與IMAQ ArrayToImage 中U8的線我的是黃的你的是黑的,我想是不是這裡出錯了.

3.請問麟仔這個文字分割程式中是否有包含二值化,濾除雜訊等功能,不必再另外寫.

4.我有用vision assistant寫了一個文字辨識的程式,但是在過程中我發現如果文字影像不在相同的位置就沒辦法辨識,我想是不是要加一個定位的動作,該怎麼做呢?請問麟仔用assistant所寫的程式是否可以與labview所寫的程式做結合.

5.我研究了一下用vision assistant所寫的文字辨識的程式方塊圖,結果我發現![](upload://pF11iAMCn1QlyT2xn0zWJbuEHVz.png)IMAQ OCR Read Text 2這個vi是用來取得文字得特徵及做文字辨識的,但是我不懂他是如何儲存文字特徵及辨識文字的,請麟仔說明一下.

![](upload://6WOsvJ88wzjr10x78YgPjppNaIg.png)

6.![](upload://3NpCJ4Bzctwe6e61afOUGO5QoaT.png)如左圖,這兩個vi有什麼作用呢?

7.如果我想直接在labview上寫文字辨識的程式,請問結構順序會跟assisant所寫出來的一樣嗎?請麟仔指教一下謝謝!

關於:

2. 關於Threshold vi的 replace value設定為 "255"即可!!

在Threshold vi的replace value設定不是有Lower value及Upper value兩個值嗎?該如何設呢

3. 關於 "將影像分成9格後是否可以一格一格做特徵擷取,然後再結合OCR完成文字辨識以提高辨識率" 問題, 是可行的!!

影像分成9格後一格一格的特徵擷取是否是在OCR這個vi裡完成,但是問題是如果字數很多,是否需要一個儲存特徵的地方.

4. 關於你要實現的功能,與motion的整合,你可能需要用到影像定位的相關程式,例如將任意尺寸的影像,全部映射到相同的座標系....這樣才可以完成你的功能

其中影像定位的相關程式,例如將任意尺寸的影像,全部映射到相同的座標系的vi是在labview哪裡呢?小弟學藝不精請麟仔賜教

希望不會打擾到您!先跟您say sorry!

我終於把程式轉成7.0了,希望麟仔有看到!

關於影像分割的程式我已經改好可以用了,但是分割出來的圖片並沒有把我要的範圍顯示出來(如下圖),我想要的範圍是只有文字部分那一格而已,我想是不是因為我沒有做ROI而產生的問題.還有就是如果文字不是在同一個位置上要怎麼自動把文字的範圍圈選出來呢?這是7.0影像分割-132123.vi

![](upload://6dxJZ2W0WqXRg3JgLpjraazgf8X.png)

1.影像分成9格後一格一格的特徵擷取是否是在OCR這個vi裡完成,但是問題是如果字數很多,是否需要一個儲存特徵的地方.

2.請問麟仔這個文字分割程式中是否有包含二值化,濾除雜訊等功能,不必再另外寫.

3.我有用vision assistant寫了一個文字辨識的程式,但是在過程中我發現如果文字影像不在相同的位置就沒辦法辨識,我想是不是要加一個定位的動作,該怎麼做呢?請問麟仔用assistant所寫的程式是否可以與labview所寫的程式做結合.

4.我研究了一下用vision assistant所寫的文字辨識的程式方塊圖,結果我發現![](upload://pF11iAMCn1QlyT2xn0zWJbuEHVz.png)IMAQ OCR Read Text 2這個vi是用來取得文字得特徵及做文字辨識的,但是我不懂他是如何儲存文字特徵及辨識文字的,請麟仔說明一下.這是用assistant 8.0 寫的轉7.0的程式7.0文字辨識 Folder.rar

5.其中影像定位的相關程式,例如將任意尺寸的影像,全部映射到相同的座標系的vi是在labview哪裡呢?

6.我所寫的兩個程式有可能結合在一起嗎?(我是過,但是有錯誤)     小弟學藝不精請麟仔賜教!

希望不會打擾到您!先跟您say sorry!

[QUOTE=jayd752002]

1.sorry!我是使用8.0,所以我只能夠轉成7.1,所以請各位前輩能用7.1幫我把我所上傳的程式轉成7.0謝謝,或者我再另外想辦法.影像分割.vi文字辨識2 Folder.rar1231.vi

[/QUOTE]

真的很可惜,我沒有辦法開啟...............sorry!!

[QUOTE=jayd752002]

2.我所使用的圖片為tif檔,我把它存成jpg檔再執行,結果還是一樣發生錯誤,我比對了程式方塊圖,發現在與IMAQ ArrayToImage 中U8的線我的是黃的你的是黑的,我想是不是這裡出錯了.

[/QUOTE]

那你必須將它改成U8的格式才可以產生Binary 圖檔(8bit mode)!!

[QUOTE=jayd752002]

3.請問麟仔這個文字分割程式中是否有包含二值化,濾除雜訊等功能,不必再另外寫.

[/QUOTE]

我提供的只是一個小範例, 僅做2值化.......其它的處理你可以依你的需求加入!!

[QUOTE=jayd752002]

4.我有用vision assistant寫了一個文字辨識的程式,但是在過程中我發現如果文字影像不在相同的位置就沒辦法辨識,我想是不是要加一個定位的動作,該怎麼做呢?請問麟仔用assistant所寫的程式是否可以與labview所寫的程式做結合.

[/QUOTE]

用vision assistant產生的程式當然可以與Labview的程式結合.....但是assistant只能做一些局部的功能,你還是必須將這些局部的功能用LabView環境連結起來!! 至於文字位置不相同就無法辨識=====>這是當然的,我之前做人臉追蹤的程式時,是先找出我要的"物件",例如人臉,或是你的"數字",而找出這些"物件",就必須需要一些影像前處理,利用這些前處理讓影像單純化,再將這個"物件"用OverLay框選,並搭配IMAQ Extract.vi 函式於輸入影像上,就可以達到"自動"鎖定文字的功能了....最後再連接到assistant所產生的文字辨識機制,就可以完成你要的功能了!!

[QUOTE=jayd752002]

5.我研究了一下用vision assistant所寫的文字辨識的程式方塊圖,結果我發現![](upload://pF11iAMCn1QlyT2xn0zWJbuEHVz.png)IMAQ OCR Read Text 2這個vi是用來取得文字得特徵及做文字辨識的,但是我不懂他是如何儲存文字特徵及辨識文字的,請麟仔說明一下.

[/QUOTE]

喔喔......我沒用過這個vi,所以沒辦法向你解釋這個function的功用!! ,以IMAQ內建的功能來說應該都有範例程式,你研究一下應該不難了解!!

[QUOTE=jayd752002]

6.![](upload://3NpCJ4Bzctwe6e61afOUGO5QoaT.png)如左圖,這兩個vi有什麼作用呢?

7.如果我想直接在labview上寫文字辨識的程式,請問結構順序會跟assisant所寫出來的一樣嗎?請麟仔指教一下謝謝!

[/QUOTE]

Palette Type是指定你要顯示的"Image"顯示元 要採用哪一種色盤(灰階選GrayScale ,二值化影像選Binary)

[QUOTE=jayd752002]

2. 關於Threshold vi的 replace value設定為 "255"即可!!

[/QUOTE]

在Threshold function如下圖設定為255, 就可以顯示黑白影像囉!!

![](upload://dbHhcO7qCLFN3ZKHJqGiG2hDMPa.jpeg)

[QUOTE=jayd752002]

3. 關於 "將影像分成9格後是否可以一格一格做特徵擷取,然後再結合OCR完成文字辨識以提高辨識率" 問題, 是可行的!!

影像分成9格後一格一格的特徵擷取是否是在OCR這個vi裡完成,但是問題是如果字數很多,是否需要一個儲存特徵的地方.

[/QUOTE]

應該可以在OCR的VI中完成吧.....畢竟OCR是專門的技術,你的目的應該只有想辦法丟單純的數字影像(經過前處理,並僅萃取文字的部分)給OCR的VI,其它有關OCR的辨識,OCR VI應該會自動完成!!

[QUOTE=jayd752002]

4. 關於你要實現的功能,與motion的整合,你可能需要用到影像定位的相關程式,例如將任意尺寸的影像,全部映射到相同的座標系....這樣才可以完成你的功能

其中影像定位的相關程式,例如將任意尺寸的影像,全部映射到相同的座標系的vi是在labview哪裡呢?小弟學藝不精請麟仔賜教

[/QUOTE]

LabView沒有內建這個功能,並須自行設計,但是影像座標定位的vi是有的!!

感謝麟仔的解答!  我已經把程式存成7.0版的了影像分割-132123.vi圖片檔案.rar7.0文字辨識 Folder.rar

關於二值化的設定問題我已經學會了!謝謝您的指導

關於影像分割的程式我已經完成了,但是我不知道該怎麼設欲分割X及Y的像素量,因為我設的值在執行後發生了以下的問題(其實我之前就有寫過了,但是我再針對我現在的問題在貼一次):

![](upload://6dxJZ2W0WqXRg3JgLpjraazgf8X.png)

1.由上圖中,欲分割X及Y的像素量我都設200,但是分割的範圍太大,我要的分割範圍只有文字而已,大概是像中間那一個大小 ,我想是否是要在程式中將影像轉成2維陣列前加一個ROI的vi呢?

關於影像座標定位的vi是有的!!我一直找不到影像座標定位的vi,可否請麟仔把路徑給我嗎?

額外問一個問題,我再把文字辨識程式從8.0存成7.0後,再打開7.0程式的時候出現windows出現錯誤,再次執行labview時出現下面的訊息![](upload://7UXlTXf5YVcMMqw9AxkU47oVaPx.png)

請問我該如何解決呢?

關於用OverLay框選,並搭配IMAQ Extract.vi 函式於輸入影像上,就可以達到"自動"鎖定文字的功能了....最後再連接到assistant所產生的文字辨識機制,就可以完成我要的功能了!!

overlay的vi是用哪一個呢?![](upload://rtU2erSSMSB0YGM0ArTzkrq6oGh.png)及IMAQ Extract是這一個嗎![](upload://ih4pwZCYhMKQlTAEgXDluIuDY7.png)

 

[QUOTE=jayd752002]

關於影像分割的程式我已經完成了,但是我不知道該怎麼設欲分割X及Y的像素量,因為我設的值在執行後發生了以下的問題(其實我之前就有寫過了,但是我再針對我現在的問題在貼一次):

[/QUOTE]

綜合你之前的問題包括OverLay, ROI, Image Extract的問題,我做了一個範例程式提供給你參考......

這個程式可以將你的輸入字卡影像先縮減至320 X 240 pixels,然後經過一些影像濾波,particle分析等步驟,找出單純的字卡影像(只有數字,背景濾除),然後我利用OverLay的功能在原始影像上框選出字卡的位置,這個方式將可以完成你之後分割時非字卡的部分也被納入的問題,最後為了讓所有被萃取字卡影像不管文字的粗細大小都具有相同的影像維度,所以我用Extract的vi將找出字卡中心點位置的附近取 120 X 160 pixel,這樣可以確保後續的分割或辨識具有一致性..........然後我在將你的分割程式包成一個Sub VI(如下圖一),分割程式會自動分割成四等份,這樣我想應該就是你想要的吧!!

圖一. 影像分割 SubVI

![](upload://ih6Bz7Ob2HDaE63SC0jeFwkA5Nh.jpeg)

圖二. 分析"0"字卡的位置與分割/重建

![](upload://5prHdPEcg8QdRJiUcEaOCTsY6iU.jpeg)

圖三. 分析"乙"字卡的位置與分割/重建

![](upload://2pxja567zWcgvtnnJIzubgowu77.jpeg)

 

[QUOTE=jayd752002]

額外問一個問題,我再把文字辨識程式從8.0存成7.0後,再打開7.0程式的時候出現windows出現錯誤,再次執行labview時出現下面的訊息![](upload://7UXlTXf5YVcMMqw9AxkU47oVaPx.png)

請問我該如何解決呢?

[/QUOTE]

這個可能是版本不相同,有些vi內部一些元件的屬性不相同所導致!!....可能你要follow 7.0的程式,在8.0上重新建立!!

最後關於Image 定位,可以採用下列函式:

![](upload://nTfXrK46Y2dophR6c80kP4CiZ0m.jpeg)

程式:(LV7.0版) 範例程式.rar

謝謝麟仔!好像花了你一點時間,真是不好意思!

如果我想把圖檔分成九格,要怎麼改呢

還有些字有一點點雜訊是不是要用Filter把它濾掉

[QUOTE=jayd752002]

謝謝麟仔!好像花了你一點時間,真是不好意思!

如果我想把圖檔分成九格,要怎麼改呢

[/QUOTE]

喔......這個容易,我晚上再把程式post上來教你怎麼改!!

[QUOTE=jayd752002]還有些字有一點點雜訊是不是要用Filter把它濾掉[/QUOTE]

其實這個問題我昨天在Fine Tune程式時就有想到,如果你看過我附上的程式,你會發現有蠻多用到形態學分析的vi,其中有

一個vi是專門用來remove small particles的,你應該發現我的疊代次數已經設到最小值"1"了.....所以可能需要再加上很多

影像前處理或型態學運算分析.....例如OPEN運算,CLOSE運算等......總之,我晚上會再試試看....幫你看看怎樣做會比較好!!

謝謝麟仔!

可否請您告訴我

1.分成九格的方法如右圖![|264x289](upload://riHbYKuMeHmyS2427Dq6Vibcxu2.jpeg)

2.及割成如下圖的方法好嗎?

![](upload://cy1MYW7k5np7MUpns5Viwyirw4C.png)

關於影像的定位我有找到兩個程式,但是都不能用所以想請麟仔看一下3.vi(這個是ROI也能隨著圖形變動而改變的程式) 

3_1.vi(這個是ROI的選擇區域改成用自已手動在圖上圈選設定的)

1.關於影像切割的程式流程說明:(可否請你解說一下影像分割的流程,尤其是那些+-等等的運算函數是有什麼作用呢?不好意思!因為我想更了解其中的內容,讓寫程式時更上手).

![](upload://eLNsEmMZhc2uKMQ3yyVhKGmOt3o.png)

2.我又發現一個問題,我再執行影像分割時使用另外一組照片,但是畫面完全變白很奇怪,想請你看看.字卡3.rar

3.關於你的範例程式,我有些地方不懂

(1)IMAQ LowPass 中Size & Tolerance 設的值是啥意思?![](upload://odJU66HtgzIkOhIv2XbiHaaaGlS.png),![](upload://c4UJcBSaevgKOmeaSYwEYmSQzbR.png)這些vi是不是所謂的型態學,center of mass x的功能是不是在找尋字卡中心點位置呢?另外IMAQ RejectBorder的功能是不是濾除邊緣的雜訊呢?

![](upload://sdSyUF1Qo5Jv2Ax2zzfWfEhYVSx.png)

(2)上圖的運算式及index array的數值是什麼意思?(0是代表列,1是代表行嗎?)

(3)關於IMAQ Overlay Rectangle 這個vi功能在原始影像上框選出字卡的位置,是怎麼框選的呢?

(4)關於IMAQ Extract 這個vi功能是找出字卡中心點位置的附近取 120 X 160 pixel,這樣可以確保後續的分割或辨識具有一致性,其中分割或辨識具有一致性是不是表示程式已經具有定位功能,不管字卡在哪裡,都能夠自動在字卡的中心點位置的附近取 120 X 160 pixel.

 

[QUOTE=jayd752002]可否請您告訴我

1.分成九格的方法如右圖![|264x289](upload://riHbYKuMeHmyS2427Dq6Vibcxu2.jpeg)

[/QUOTE]

附檔是分割成九格的方法.......請注意框選處所設的值,以這個範例來說,表示分割為3*3的Matrix!!

![](upload://9no7yRUU573cocL3oeANeJnj6fk.jpeg)

[QUOTE=jayd752002]

2.及割成如下圖的方法好嗎?

![](upload://cy1MYW7k5np7MUpns5Viwyirw4C.png)

[/QUOTE]

以上的分割方式其實只要將九宮格的影像部份重建就可以了!!..........這部份你可以先試試看,不懂再問我!!

程式1: 範例程式_9分割.rar

最後,你或許會覺得是否可以將OverLay的矩形框選如你所附上的圖一樣,只框選文字的部份而不用強制resize至120*160 pixels.......所以我稍加修改我的程式,希望對你有幫助!!

在這個程式理,我沒有先將影像resize,所以我增加remove small objects的疊代次數,因此應該可以解決你說的雜點問題,而且這個程式是直接fit文字.....結果應該與你附上的圖是一樣的吧!!

![](upload://39gUKd51CXfkTQuJuVzyuTPwZSH.jpeg)

程式2:範例程式_Fit文字_雜訊濾除.rar

若有問題.................再說吧~~~

![](upload://d0GIyScQZXtzAidysv5XqlkzK8.png)

關於這個地方我看不太懂,是怎麼直接fit文字的,第一個index array是取得row第一列的值,第二個index array所設的值(2,3,4,5)是不是提出row第一列2~5的值.

是不是只要是用overlay並且配合imaq extract就可以產生自動鎖定的功能了?,因為我試了一下,發現不管字卡的位置在哪都可以直接fit文字.

sorry! 我不知不覺好像問太多.

[QUOTE=jayd752002]

1.關於影像切割的程式流程說明:(可否請你解說一下影像分割的流程,尤其是那些+-等等的運算函數是有什麼作用呢?不好意思!因為我想更了解其中的內容,讓寫程式時更上手).

![|953x602](upload://eLNsEmMZhc2uKMQ3yyVhKGmOt3o.png)

[/QUOTE]

這個蠻難詳細說明的,很多東西是從實驗中try出來的,簡單的說明如下:

(1) 首先先讀出輸入影像的維度,然後依據所指定的預分割xy像素來估算兩層for loop執行的次數.

(2)在 上面那個兩層for loop裡,主要是依據loop的index值來自動取得將輸入Extract vi的矩形座標位置,這樣才能分割出多張分割影像,而下面那個IMAQ Create vi是要建立每一張影像的buffer,且每一個分割影像不可以具有相同的buffer名稱.

(3)在下面的兩層for loop就是先取得原始影像的維度,並依據這個維度創造一個與輸入影像具有相同維度的空矩陣,然後在依據分隔影像的相對位置座標系,將這些分割影像的陣列資料merge至空陣列對應位置,最後再將陣列轉為影像資料,就完成重建了!!

[QUOTE=jayd752002]

2.我又發現一個問題,我再執行影像分割時使用另外一組照片,但是畫面完全變白很奇怪,想請你看看.

[/QUOTE]

我看過這些影像了....坦白講,這些影像並不好,應為不夠明顯.....需要先做影像強化後才可以使用.....也就是說影像的前處理必須重新評估運算規則!!

[QUOTE=jayd752002]

3.關於你的範例程式,我有些地方不懂

(1)IMAQ LowPass 中Size & Tolerance 設的值是啥意思?![](upload://odJU66HtgzIkOhIv2XbiHaaaGlS.png),

[/QUOTE]

這些值是要建立一個3*3的矩陣............你如果學過Digitial Image Processing應該就知道這是所謂的Mask,用來平滑化9公格鄰近像素的梯度(Smooting)

[QUOTE=jayd752002]

![](upload://c4UJcBSaevgKOmeaSYwEYmSQzbR.png)這些vi是不是所謂的型態學,center of mass x的功能是不是在找尋字卡中心點位置呢?另外IMAQ RejectBorder的功能是不是濾除邊緣的雜訊呢?

[/QUOTE]

沒錯,這就是形態學運算,IMAQ RejectBorder的功能是在濾除邊緣雜訊沒錯, center of mass x/y是中心點座標沒錯,是為了給overlay rectangle使用的!!

[QUOTE=jayd752002]

![](upload://sdSyUF1Qo5Jv2Ax2zzfWfEhYVSx.png)

(2)上圖的運算式及index array的數值是什麼意思?(0是代表列,1是代表行嗎?)

[/QUOTE]

Index 0= Center x座標, Index 1=Center y座標, Index 2~5是fit object的矩形座標.

[QUOTE=jayd752002]

(3)關於IMAQ Overlay Rectangle 這個vi功能在原始影像上框選出字卡的位置,是怎麼框選的呢?

[/QUOTE]

就是給定矩形的座標就可以了,至於會fit 文字,是因為我前面的形態學運算的功勞,它會回報影像中文字正確的中心點位置與矩形座標!!

[QUOTE=jayd752002]

(4)關於IMAQ Extract 這個vi功能是找出字卡中心點位置的附近取 120 X 160 pixel,這樣可以確保後續的分割或辨識具有一致性,其中分割或辨識具有一致性是不是表示程式已經具有定位功能,不管字卡在哪裡,都能夠自動在字卡的中心點位置的附近取 120 X 160 pixel.

[/QUOTE]

沒錯!!

小建議:

我覺得你先好好的了解一下程式的原理,這樣將對你學習IMAQ會很有幫助的,我之前學這個都沒有人可以教我, 我是看了IMAQ G Reference 300多頁的原文書與它的影像函式原理原文書,搭配實作(一個一個vi 試試看它的用途).....所以學習IMAQ沒有捷徑,還是要自己多試試看!!

 

[/QUOTE]