תקוע במעבר ממטלב לC בכמה נושאים - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תקוע במעבר ממטלב לC בכמה נושאים


rk666

Recommended Posts

אני לא יודע אם למישהו יש פה נסיון מעשי עם שתי הסביבות, אבל אני דיי תקוע במעבר בינהם, בגלל העושר והקלות של המטלב (אבל האיטיות) והקמצנות של C (והמהירות).

אני צריך להעביר את הפרויקט שכתוב במטלב, לC לצורך אופטימיציות ומהירות, הבעיה היא שאני לא ממש הצלחתי למצוא ספריות (ואם הצלחתי למצוא, אז לא להתקין ולהשתמש), שעושות את מה שאני צריך.

אני צריך בסך הכל 4 פונקציות שיש במטלב שחסרות לי.

1) קריאת DICOM

2) כפל ו "RESHAPE" למטריצות (באופן יעיל, אני יכול לכתוב אחד, בכמה שורות, אבל זה יהיה O(n^3) ולי יש מטריצות ענקיות.

3) imrotate של מטלב, מימוש בC זה חלק מה image processing toolbox.

4) פונקציות find של מטלב.

אני כבר מתחיל להתייאש מהחיפושים, אני מקווה שיש פה לפחות מישהו אחד שמכיר את הנושא...

קישור לתוכן
שתף באתרים אחרים

אין באוקטב מה שאני צריך בשביל , במטלב יש הכל, פשוט אני צריך להעביר את הקוד מטלב לC.

מצאתי ברשימה ספריה מסויימת, שאני צריך עוד לבדוק של Linear algebra. אבל גם אם זה מה שצריך, זה רק 1 מתוך 4.

עדכון: עכשיו אני רואה שזה מתבסס על חבילות חיצוניות נוספות...

אין איזה קובץ h וCPP פשוט שעושה רק קריאת DICOM, רק הכפלת מטריצות וכדומה, לעזאזל...

קישור לתוכן
שתף באתרים אחרים

לגבי dicom, אתה לא יכול קודם לבצע המרה לפורמט יותר נורמלי ולעבוד איתו ? בכל מקרה, תחפש פה:

http://www.dicomprogramming.com/

http://www.dclunie.com/medical-image-faq/html/part8.html

http://www.idoimaging.com/index.shtml

http://www.codeproject.com/bitmap/dcmconverter.asp

http://www.codeproject.com/cpp/Dicom_scribble.asp

קישור לתוכן
שתף באתרים אחרים

לא יודע, אני רק יודע שבמטלב יש dicomread שזאת פונקציה פשוטה שממירה את התמונה למערך uint16 ארבע מימדי, פשוט וקל.

(ופגשתי חלק מהאתרים שהבאת פה, תודה)

אנחנו מקבלים את המידע בDICOM, אני חושב שאם נמיר אותו לפורמט אחר, נאבד מידע ברב הקידודים.

קישור לתוכן
שתף באתרים אחרים

תראה, זה לא יבוא בקלות. כל הרעיון ב-matlab זה שעשו בשבילך הרבה מהעבודה כדי שתוכל להתרכז בעיבוד אות ובאלגוריתמיקה.

כמו שהציעו פה, הדרך הכי קלה בשבילך להגיע למימוש עובד ואיכותי יחסית ב-C זה לעבוד עם הרבה ספריות חיצוניות. יקח לך הרבה מאוד זמן להגיע בעצמך למימוש איכותי של הפונקציות שאתה רוצה. על כן אל תפחד לקחת ולהשתמש בהרבה ספריות חיצוניות, ככל שידרש.

לגבי הכפלת מטריצות, תחפש ב-numerical recipes in C שאפשר גם למצוא אותו ברשת בחינם - www.nr.com. זה לא בהכרח הקוד הכי טוב בעולם, אבל כזכור לי יש שם קובץ פשוט להכפיל מטריצות. החסרון: הם מצפים למטריצות בפורמט שהם מבינים.

קישור לתוכן
שתף באתרים אחרים

תגיד, ההמרה הזו הופכת את הקוד ל 100% PURE ANSI-C שאפשר להריץ אותו ללא תלות ב VM של matlab במחשבי linux/windows, או שעדיין זה בפועל צריך להסתמך על חלקים שרצים במנוע של matlab ?

קישור לתוכן
שתף באתרים אחרים

למטלב יש כלים שמאפשרים להפוך קוד Matlab וקוד Simulink לקוד C (ואפילו VHDL).

כמובן שהם עולים כסף.

נכון, אבל הבנתי שהם בשורה התחתונה לא ממש משפר את המהירות

בכל מקרה, אין לי את הכלי הזה וזה לא רלוונטי כל כך.

קישור לתוכן
שתף באתרים אחרים

נכון, אבל הבנתי שהם בשורה התחתונה לא ממש משפר את המהירות

בכל מקרה, אין לי את הכלי הזה וזה לא רלוונטי כל כך.

בהדגמה שראיתי (בשנה שעברה) המהירות שופרה פלאים. כמובן שזה לא תמיד נכון, וזה עדיין לא מהיר כמו קוד שכתבו בני אדם.

אני לא יודע לגבי 100% ANSI-C. יתכן שזה 100% ANSI פלוס איזשהי ספריה של MATLAB.

כמו כן בפרוייקט שראיתי לפני שנים (ב-2002) זה אכן דרש מיוחדת של matlab. אבל אז כל הנושא היה בחיתוליו. אני מניח שהיום זה הרבה יותר טוב.

בסופו של דבר בכל מקום שבו עבדתי להמיר את האלגוריתמיקה של מטלב ל-C ברמת production זה תמיד עבודה שדורשת חשיבה, יכולת וזמן.

כמו כן מנסיוני במערכות בינוניות וגדולות החלק שאותו מימשו במטלב הוא רק חלק קטן מהקוד הסופי, כך שבכל מקרה יש עוד המון עבודה מסביב.

אם אתה עובד בחברה שיש לה כסף וזה מספיק חשוב לה, תנסה לשכנע אותם לקנות את כלי ההמרה ממטלב ל-C. ימי העבודה שתשקיע בזה גם כן עולים כסף לחברה, ויתכן שזה יחסוך לחברה כסף להשקיע בכלי (זה נכון לכל כלי, כמובן).

קישור לתוכן
שתף באתרים אחרים

עדיין לא במסגרת עבודה, אבל במסגרת פרויקט גמר בחברה (גדולה, באמת גדולה), המנחה שם פשוט אמר לי "לך חפש" ספריות באינטרנט, הבעיה היא שכל אחת דורשת התקנה של דברים שבחיים לא עשיתי והאמת אני לא ממש מבין איך.

אני יודע שהם טוענים שהם שיפרו בגירסא 7 ומעלה את המהירות, אבל for של מטלב לעולם לא יהיה כמו for של C. (ברמה המטריציונית, לא תמיד יש מענה, שלא יקח יותר מידי זכרון).

הדבר הזה שהמנחה אמר לי להפוך את הקוד לC היה כמו פצצה, אני חשבתי למען האמת שזה יהיה יותר פשוט אבל ככל שאני נכנס לזה, זה נראה יותר ויותר מסובך.

אני מת לסיים עם הפרויקט הזה כבר, אני פשוט רואה שזה יקח יותר ממה שחשבתי.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...