如何將Matlab的程式碼,轉換成BCB的程式碼呢? |
尚未結案
|
bala0514
一般會員 發表:42 回覆:37 積分:15 註冊:2004-07-26 發送簡訊給我 |
以下為影像分析的Matlab程式碼,要如何轉換為易懂的BCB程式碼呢?
謝謝各位高手
I = imread('D:\MATLAB7\work\88.bmp'); figure, imshow(I), title('original image'); BWs = edge(I, 'sobel', (graythresh(I) * .1)); figure, imshow(BWs), title('binary gradient mask'); se90 = strel('line', 3, 90); se0 = strel('line', 3, 0); BWsdil = imdilate(BWs, [se90 se0]); figure, imshow(BWsdil), title('dilated gradient mask'); BWdfill = imfill(BWsdil, 'holes'); figure, imshow(BWdfill); title('binary image with filled holes'); BWnobord = imclearborder(BWdfill, 4); figure, imshow(BWnobord), title('cleared border image'); seD = strel('diamond',1); BWfinal = imerode(BWnobord,seD); BWfinal = imerode(BWfinal,seD); figure, imshow(BWfinal), title('segmented image'); BWoutline = bwperim(BWfinal); Segout = I; Segout(BWoutline) = 255; figure, imshow(Segout), title('outlined original image');***程式語言真是一門高深的學問***
------
***程式語言真是一門高深的學問*** |
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
dear bala0514: 要轉換是沒有問題的,但是,絕對不是「易懂」~因為在BCB下,每一個MATLAB的function都得自己重寫,似乎沒有現成的可以用。你可以根據function的功能或對應的公式改用C寫出來,就可以在BCB下用了。 舉個例來說,imread可以改用TBitmap::LoadFromFile來完成;imshow可以看成將影像顯示在TImage上;title可以改用Label元件來顯示。 唯有了解MATLAB function的演算法,才能將你貼的code轉換完成。有幾個方法可以試試看:
1. 根據function的功能找出演算法,自行寫成C的code
2. 直接研究function的 .m 檔,將它改寫。雖然原始碼是公開的,但是其中錯綜複雜的呼叫,可能會花上很多時間。再加上MATLAB使用向量作為函式參數來傳遞,要注意維度以及其他雜七雜八的細節,可能比用 1. 的方式還慢。 因此還是建議你,先研究一下各個function的演算法比較實在。我曾經改寫過edge這個function,但只有sobel的方法,你可以參考一下:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41085
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |