ዝርዝር ሁኔታ:

የዓይን ኳስ ማዘዣ የአይን ኳስ ማዘዣዎ - BME60B ፕሮጀክት 9 ደረጃዎች
የዓይን ኳስ ማዘዣ የአይን ኳስ ማዘዣዎ - BME60B ፕሮጀክት 9 ደረጃዎች

ቪዲዮ: የዓይን ኳስ ማዘዣ የአይን ኳስ ማዘዣዎ - BME60B ፕሮጀክት 9 ደረጃዎች

ቪዲዮ: የዓይን ኳስ ማዘዣ የአይን ኳስ ማዘዣዎ - BME60B ፕሮጀክት 9 ደረጃዎች
ቪዲዮ: የዐይን ህመም ቅድመ ምልክቶች / አይነ ስውርነትን ሊያስከትል ይችላል/ መፍትሄውስ ምንድን ነው 2024, ታህሳስ
Anonim
የዓይን ኳስ ማዘዣ የዓይን ብሌን ማዘዣ -የ BME60B ፕሮጀክት
የዓይን ኳስ ማዘዣ የዓይን ብሌን ማዘዣ -የ BME60B ፕሮጀክት

በ: ሃና ሲሎስ ፣ ሳንግ ሄ ኪም ፣ ቶማስ ቫዝኬዝ ፣ ፓትሪክ ቪስቴ

ማጉያ ለንባብ መነጽሮች ከሚቀርቡት ቁልፍ ባህሪዎች አንዱ ነው ፣ እነሱ በዲፕተሮች ማዘዣቸው የተመደቡ። በሚቺጋን ቴክኖሎጂ ዩኒቨርሲቲ መሠረት አንድ ዳይፕተር ብዙውን ጊዜ በሜትር (ሚቺጋን ቴክኖሎጂ ዩኒቨርሲቲ) ውስጥ የሚለካው የሌንስ የትኩረት ርዝመት ነው። የንባብ መነጽሮች ኮንቬክስ ሌንሶች ስላሏቸው ፣ የትኩረት ርዝመቱ አዎንታዊ ይሆናል ፣ ዳይፕተሮችም እንዲሁ አዎንታዊ እንዲሆኑ (ሀይፐርፊዚክስ)። በእቃው መካከል ያለው ርቀት ከእውነተኛው ሌንስ ይበልጥ እየራቀ ሲሄድ የትኩረት ርዝመት ይጨምራል ፣ እና እነሱ ተቃራኒ ተመጣጣኝ ስለሆኑ ዳይፕተሮች ወደ መቀነስ ይመራሉ። ስለዚህ ፣ ተጨማሪ ዳይፕተሮች ያሉት የንባብ መነፅሮች መኖራቸው የዲፕተሮቹን እሴት በመጨመር የትኩረት ርዝመቱ ያነሰ መስሎ እንዲታይ ሌንስ በእይታ ውስጥ እንዲጎላ ይረዳል።

የቀረበው ኮድ ባልታወቀ የሐኪም ማዘዣ የሌንስን ዳይፕተር ለመተንበይ ያገለግላል። የመድኃኒት ማዘዣውን ለማስላት ሁለት ግብዓቶች ጥቅም ላይ ይውላሉ -ምንም ዓይነት ሌንሶች ሳይጠቀሙ የቁጥጥር ዳራ ፎቶግራፍ ፣ እና ተመሳሳይ ዳራ ሌላ ፎቶግራፍ ግን በምርጫ መነፅር። ፕሮግራሙ በእነዚህ ሁለት ፎቶግራፎች መካከል ያለውን መዛባት ይለካል። ከዚያ በመነሳት የሌንሱን ዲፕተር በመገመት ለተጠቃሚው የሚያየውን ውጤት ለማምጣት እንችላለን።

ለዚህ አስተማሪ ፣ የሚከተሉትን ያስፈልግዎታል

  • በወረቀት በ 11x8.5 ላይ የታተመ ጥቁር-ነጭ የቼክቦርድ ንድፍ
  • ትኩረቱን የመቆለፍ ችሎታ ያለው ካሜራ
  • ባለሶስት ጉዞ ፣ ወይም ካሜራውን ለመጠበቅ ተመሳሳይ የሆነ ነገር
  • የንባብ መነጽሮች የተለያዩ ማዘዣዎች
  • MATLAB

ደረጃ 1 ፎቶዎችን ያንሱ

ፎቶዎችን ያንሱ
ፎቶዎችን ያንሱ
ፎቶዎችን ያንሱ
ፎቶዎችን ያንሱ
ፎቶዎችን ያንሱ
ፎቶዎችን ያንሱ

የሌንስን ማጉላት ለማስላት ፣ ከእቃው ትክክለኛ መጠን ጋር ማወዳደር መቻል አለብዎት። ለዚህ ፕሮጀክት ፣ አጉላ ምስል ከቁጥጥር ምስል ጋር እናወዳድራለን።

ስለዚህ ፣ የመጀመሪያው እርምጃ ተመሳሳይ ምስል ሁለት ፎቶዎችን ማንሳት ነው - የመጀመሪያው በካሜራው ብቻ ፣ እና ሁለተኛው ለመሞከር በሚፈልጉት የንባብ መነፅሮች መነፅር ነው።

በ 8 ኢንች ፍርግርግ ባለ 8.5x11 ኢንች ጥቁር እና ነጭ የቼክቦርድ ስዕል ያነሳሉ። ከቼክቦርዱ ራቅ ብለው ካሜራዎን በ 11 ውስጥ ያዋቅሩ። ፎቶዎቹን ከማንሳትዎ በፊት ትኩረቱን በቼክቦርዱ ላይ ይቆልፉ።

የንባብ መነጽሮች ሳይኖሩ የቼክቦርዱ ፎቶ ያንሱ። ከዚያ ምንም ሳያንቀሳቅሱ የንባብ መነጽሮችን በካሜራው ፊት ያስቀምጡ እና ሁለተኛውን ፎቶ ያንሱ።

የካሜራዎ አቀማመጥ በጥይት መካከል የማይንቀሳቀስ መሆኑን ያረጋግጡ። በሁለቱ ፎቶዎች መካከል መለወጥ ያለበት ብቸኛው ነገር በካሜራው ፊት ያለው የመነጽር መነፅር መኖር ነው።

ከፎቶዎቹ ጋር ሲጨርሱ ወደ ኮምፒተርዎ ይስቀሏቸው።

ደረጃ 2 ምስሎቹን ወደ MATLAB ይጫኑ

ወደ MATLAB ምስሎቹን ይጫኑ
ወደ MATLAB ምስሎቹን ይጫኑ

አዲስ ስክሪፕት ይክፈቱ።

በመጀመሪያ ፣ ፎቶዎቹ የተከማቹበትን ማውጫ ይግለጹ። ከዚያ የ-j.webp

Dir = 'C: / ተጠቃሚዎች / kuras / Desktop / classes / SQ2 / BME60b / Sandbox / testphotos'; GetDir = dir ('*. Jpg');

ለፕሮጀክታችን ፣ የፕሮግራሙን ተጠቃሚ ለየትኞቹ ፋይሎች ማወዳደር እንደፈለጉ ማሳወቅ እንፈልጋለን። የመጀመሪያው ክፍል ተጠቃሚው የቁጥጥር ምስሉን እንዲገልጽ ይጠይቃል ፣ ሁለተኛው ደግሞ ተጠቃሚው የሙከራ ምስሉን እንዲገልጽ ይጠይቃል።

  • %የትኛው ፋይል የቁጥጥር ምስል እንደሆነ ተጠቃሚን ይጠይቁ።
  • ቁጥጥር = ግብዓት ('# የቁጥጥር ምስል። / n');
  • ControlFile = [GetDir (ቁጥጥር).ስም]
  • %ለመተንተን የሚፈልጉት ምስል የትኛው ፋይል እንደሆነ ተጠቃሚውን ይጠይቁ።
  • ምረጥ ፋይል = ግብዓት ('\ n# ሊተነትኑት የሚፈልጉት ምስል / n') ፤
  • PrescripFile = [GetDir (SelectFile). ስም];

ደረጃ 3 የምስል ትንታኔ

የምስል ትንተና
የምስል ትንተና
የምስል ትንተና
የምስል ትንተና

በ MATLAB ውስጥ ባለ ቀለም ምስል MxNx3 ነው ፣ ግራጫማ ምስል MxN ነው። ይህ ማለት ግራጫማ ምስልን ለማሳደግ/ለማርትዕ ፈጣን ነው ምክንያቱም ለመከታተል አነስተኛ ውሂብ አለ። ምስሉን ወደ ግራጫ ልኬት ለመለወጥ rgb2gray ን ይጠቀሙ። (ፎቶግራፎቻችን በአግድም ስለመጡ የመጥመቂያው ተግባር ጥቅም ላይ ውሏል - ይህ የኮድ መስመር በእርስዎ ስሪት ውስጥ አስፈላጊ ላይሆን ይችላል።)

  • %ወደ ግራጫ ቀለም ይለውጡ እና ያሽከርክሩ
  • እኔ = imread (ControlFile);
  • እኔ = rgb2gray (እኔ);
  • I = imrotate (I, 90);

በመቀጠል ምስሉን ያሳዩ። የሙከራ ምስሉ በኋላ ደረጃዎች ውስጥ ከመቆጣጠሪያው አጠገብ መሆን እንዲችል የንዑስ ፍንዳታ ተግባሩ ጥቅም ላይ ይውላል።

  • %ማሳያ
  • ምስል 1);
  • ንዑስ ክፍል (1 ፣ 2 ፣ 1)
  • imshow (እኔ);
  • ርዕስ (ControlFile);

ተጠቃሚው የቼክ ቦርዱን ከሙሉ ምስሉ እንዲያጭድ ለመጠየቅ ኢምክሮፕ ይጠቀሙ። የሚከተለው ኮድ ለተጠቃሚው መመሪያዎችን ለመስጠት የመልእክት ሳጥን ያሳያል።

  • ለትንተና %ቼክቦርድ ያጭዱ
  • ተጠባባቂ (msgbox ({'' ቼክቦርዱን ለመዝራት መስቀል ፀጉሮችን ይጠቀሙ። '' 'ከዚያም የፍላጎት ቦታን ሁለቴ ጠቅ ያድርጉ።')));
  • I_crop = imcrop (I);

ምስሉን ሁለትዮሽ ለማድረግ ኢምቢነሪዝ ይጠቀሙ።

I_binary = imbinarize (I_crop);

ደረጃ 4 በቼክቦርዱ ላይ የነጭ ካሬዎች ስፋት ያስሉ።

በቼክቦርዱ ላይ የነጭ ካሬዎች ስፋት ያስሉ።
በቼክቦርዱ ላይ የነጭ ካሬዎች ስፋት ያስሉ።
በቼክቦርዱ ላይ የነጭ ካሬዎች ስፋት ያስሉ።
በቼክቦርዱ ላይ የነጭ ካሬዎች ስፋት ያስሉ።
በቼክቦርዱ ላይ የነጭ ካሬዎች ስፋት ያስሉ።
በቼክቦርዱ ላይ የነጭ ካሬዎች ስፋት ያስሉ።

በመቀጠልም ተጠቃሚው ኢምላይን በመጠቀም በምስሉ ላይ መስመር እንዲይዝ ይጠይቁ። ይህ መስመር በቼክቦርዱ ላይ በአግድም መሮጥ አለበት። በጥቁር አደባባይ ላይ መጀመር እና መጨረስ አለበት (የትም ቦታ የለውም)- ይህ የሆነው እኛ የምንለካው የጥቁርዎቹን ሳይሆን የነጩን አደባባዮች ስፋት ነው።

  • %መሳል መስመር
  • ምስል 1)
  • ንዑስ ክፍል (1 ፣ 2 ፣ 1)
  • imshow (I_binary);
  • ተጠባባቂ (msgbox ({'' 9 ሳጥኖችን የሚሸፍን መስመርን ጠቅ ያድርጉ እና ይጎትቱ ፣ ከጥቁር ቦታ ወደ ጥቁር ቦታ። '፣' ለማረጋገጥ ሁለቴ ጠቅ ያድርጉ። '})));
  • መስመር = ዝለል;
  • አቀማመጥ = ይጠብቁ (መስመር);
  • የመጨረሻ ነጥቦች = line.getPosition;

ለተሳለው መስመር የመጨረሻ ነጥቦች የ X እና Y ኮዲነተሮችን ያውጡ።

  • X = የመጨረሻ ነጥቦች (:, 1)
  • Y = የመጨረሻ ነጥቦች (:, 2);

በተሳለፈው መስመር ላይ በተገኙት ጥንካሬዎች ላይ በመመስረት ግራፍ ለማምረት የማይታወቅ መገለጫ ይጠቀሙ። ይህ ከ 0 (ጥቁር) እስከ 1 (ነጭ) ድረስ ካለው ካሬ ማዕበል ጋር ሊመሳሰል ይገባል። ጫፎቹን እና አካባቢያቸውን እንዲሁ ያሰሉ።

  • ምስል (2)
  • ንዑስ ክፍል (1 ፣ 2 ፣ 1)
  • ርዕስ ('በተሻሻለው መስመር (የምስል ቁጥጥር) ላይ የምስል ጥንካሬ')
  • የማይታወቅ (I_binary ፣ X ፣ Y); ፍርግርግ ላይ;
  • [~, ~, c1, ~, ~] = የማይታወቅ (I_binary ፣ X ፣ Y);
  • [ጫፎች ፣ loc] = findpeaks (c1 (:,:, 1));
  • ቆይ
  • ሴራ (ሎክ ፣ ጫፎች ፣ ‹ሮ›);
  • ቆይ

ለ ‹ሉፕ› በመጠቀም የእያንዲንደ አምባው ርዝመት በተሻሻለው መገለጫ ግራፍ ላይ ያግኙ። ባልተገለፀው ግራፍ ውስጥ ላሉት ተመሳሳይ የከፍታዎች መጠን ዑደቱን ያሂዱ። የእያንዳንዱን ቆላማ ርዝመት ለማስላት ከ ‹0› የጥንካሬ እሴት ይልቅ ‹1 ›ያሉባቸውን ሥፍራዎች ሁሉ ለማግኘት‹ አግኝ ›የሚለውን ተግባር ይጠቀሙ። ከዚያ ፣ የነጭው ካሬ ርዝመት በፒክሴሎች ውስጥ እኩል መሆን ያለበት የፕላቱን አጠቃላይ ርዝመት ለማግኘት የዚያ ድርድርን ርዝመት ያሰሉ።

ለ i = 1: ርዝመት (loc)

እኔ == ርዝመት (loc) ከሆነ

plateau = find (c1 (loc (i): end,: 1));

ሌላ

plateau = find (c1 (loc (i): loc (i+1) -1,:, 1));

አበቃ

ControlPlateauList (i) = ርዝመት (አምባ);

አበቃ

ደረጃ 5 ለሙከራ ምስል 3 እና 4 ደረጃዎችን ይድገሙ

ለሙከራ ምስል 3 እና 4 ደረጃዎችን ይድገሙ
ለሙከራ ምስል 3 እና 4 ደረጃዎችን ይድገሙ

*ማሳሰቢያ -በሙከራ ምስሉ ላይ የኢሜል መስመሩን በሚስሉበት ጊዜ በመቆጣጠሪያው ምስል ላይ ከሳቡት መስመር ጋር በሚዛመዱ አደባባዮች ላይ መሳልዎን ያረጋግጡ።

ደረጃ 6: የሌንስን ማጉላት ያስሉ።

የሌንስን ማጉላት ያስሉ።
የሌንስን ማጉላት ያስሉ።

የተጨመሩት መለኪያዎች በደረጃ 5 የተሰላውን የፕላቶውን ርዝመት አማካኝ በመቆጣጠሪያ ደረጃ ቆጠራ በተቆጣጠረው የቁልቁለት ርዝመት አማካይ አማካይ 4. ይህ በ 1.0884 ይሰላል።

ማጉላት = አማካይ (plateauList)/አማካይ (ControlPlateauList);

ደረጃ 7-R-squared ን እና የተጠቃሚው ማዘዣ በ Interpolation በኩል ማግኘት

R-squared እና የተጠቃሚው ማዘዣ በ Interpolation በኩል ማግኘት
R-squared እና የተጠቃሚው ማዘዣ በ Interpolation በኩል ማግኘት

ኮዱን በመጠቀም;

  • md1 = fitlm (GivenPrescription ፣ MagArray);
  • ሬኩዌር = md1. Rsquared. Ordinary;

የግራፍ (ግራን) የተሰጠ የግራ-እሴት (የእኛ ሌንሶች የተሰጡ እሴቶች) ከ MagArray (ቀደም ብለን ያሰላነው የማጉላት ልኬቶች ሬሾዎች ድርድር) ማግኘት እንችላለን። በቂ ከፍተኛ የ R- ካሬ እሴት በማግኘት ፣ የዚህን ዘዴ አጠቃቀም ትክክለኛነት ለማረጋገጥ በቂ የሆነ ጠንካራ ትስስር እንዳለ መገመት ይቻላል። ለዚህ የተለየ ጉዳይ ፣ የ R- ካሬ እሴት 0.9912 ነበር ፣ ይህም ጠንካራ ትስስርን የሚያመለክት እና ስለሆነም ይህንን ዘዴ በመተንተን ለመጠቀም ትክክለኛ ነው።

ተግባሩን በመጠቀም;

ማዘዣ = interp1 (MagArray ፣ GivenPrescription ፣ ማጉላት ፣ ‹መስመራዊ›);

የእኛን የማጉላት ጥምርታ (በ x-axis ላይ) ተጓዳኝ የመድኃኒት ዋጋን (በ y-axis ላይ ያለ እሴት) ማዛመድ እና የተጠቃሚው ማዘዣ ምን እንደ ሆነ ማግኘት እንችላለን።

እኛ ባለን መረጃ ላይ በመመስረት ስለሌለን መረጃ ግምቶችን እንድናደርግ ስለሚያስችለን ይህ ዘዴ እንዲሠራ የመረጃ መተርጎም አስፈላጊ ነው። ምንም እንኳን የመድኃኒት ማዘዣዎች በማንኛውም ተመሳሳይ እሴቶች ውስጥ ሲገቡ የውጤቶችን ብዛት ለመቀነስ ድንበሮችን በመፍጠር የተሻለ ብቃት ያለው መስመር ለዚህ ግምት ጠንካራ እጩ ይሆናል። ይህ በኋለኞቹ ደረጃዎች ተብራርቷል።

ደረጃ 8 - በግራፍ ላይ የተጠቃሚውን ማዘዣ ማሳየት

በግራፍ ላይ የተጠቃሚውን ማዘዣ በማሳየት ላይ
በግራፍ ላይ የተጠቃሚውን ማዘዣ በማሳየት ላይ

የሚከተለውን ኮድ በመጠቀም

  • ምስል;
  • ሴራ (የተሰጠ መግለጫ ፣ MagArray ፣ ‘-g’)
  • ቆይ
  • ሴራ (ማዘዣ ፣ ማጉላት ፣ ‹ቢፒ›)
  • ቆይ
  • ፍርግርግ
  • አፈ ታሪክ ('መረጃ' ፣ 'የተጠላለፉ ነጥቦች' ፣ 'ቦታ' ፣ 'NW')

በአረንጓዴ መስመር እና የተሰላ ማጉያችን የተገኘ መረጃን ከሰማያዊ ኮከብ ጋር እርስ በእርስ ከተያያዙት ማዘዣዎቻችን ጋር የማጉላትያ ምጣኔዎችን እና የተሰጠውን ማዘዣን የሚያሳይ ግራፍ ማቀድ እንችላለን። ከዚያ አፈ ታሪኩ ርዕሱን ፣ ኤክስ-ዘንግ እና y-ዘንግን በመሰየም አፈ ታሪኩን ከላይ በግራ ጥግ ላይ ያስቀምጣል።

ደረጃ 9 የሐኪም ማዘዣዎን ያጥፉ።

ማዘዣዎን ያጥቡ።
ማዘዣዎን ያጥቡ።

ለመድኃኒት ማዘዣው ማጠቃለያ ለማምረት የሚከተለው ኮድ ጥቅም ላይ ይውላል።

  • ማዘዣ ከሆነ <= 1.125

    CalculatedPrescription = '1.0';

  • ሌላ ከሆነ ማዘዣ <= 1.375

    CalculatedPrescription = '1.25';

  • ሌላ ከሆነ ማዘዣ <= 1.625

    CalculatedPrescription = '1.5';

  • ሌላ ከሆነ ማዘዣ <= 1.875

    CalculatedPrescription = '1.75';

  • ሌላ ከሆነ ማዘዣ <= 2.25

    CalculatedPrescription = '2.0';

  • ሌላ ከሆነ ማዘዣ <= 2.625

    CalculatedPrescription = '2.5';

  • ሌላ ከሆነ ማዘዣ <= 3

    CalculatedPrescription = '2.75';

  • ሌላ ከሆነ ማዘዣ <= 3.375

    CalculatedPrescription = '3.25';

  • ሌላ

    CalculatedPrescription = 'ያልታወቀ';

  • አበቃ

በቃለ -መጠይቅ የተገኘ ማዘዣ የግድ ትክክለኛውን የመድኃኒት ማዘዣን የሚያንፀባርቅ አይደለም - ይህ የሆነበት ምክንያት በሰው ስህተት ምክንያት ፎቶውን በመተንተን ሁልጊዜ ትንሽ ልዩነቶች ስለሚኖሩ ነው። ስለዚህ ፣ ትክክለኛውን የመድኃኒት ማዘዣ ለመመደብ ይህንን እርምጃ እንፈልጋለን።

የሚሰጡት የመድኃኒት ማዘዣዎች ብዙውን ጊዜ ከ 1.0 ዳይፕተሮች ተጀምረው በመድኃኒቶቻቸው ውስጥ በ.25 ይጨምራሉ ፣ ስለዚህ የመድኃኒት ማዘዣውን ካሰላሰሉ በኋላ ተጠቃሚው ከሚያስፈልገው በላይ የሚስማማውን ማዘዣ መወሰን እንፈልጋለን። የመድኃኒት ማዘዣውን ካሰላሰልን በኋላ እሴቱን ለመፈተሽ እና የትኛውን የሐኪም ማዘዣ አስፈላጊ እንደሆነ ለመወሰን በተሰጠው መግለጫ ውስጥ እናካሂዳለን። ከ 1.125 ያነሰ ወይም እኩል የሆነ ፣ ከዚያ ማዘዣው 1.0 ነው። ከ 1.375 ያነሰ ወይም እኩል የሆነ ማንኛውም ነገር ፣ ማዘዣው 1.25 ነው። ከ 1.625 ያነሰ ወይም እኩል የሆነ ማንኛውም ነገር ፣ ማዘዣው 1.5 ነው። ከ 1.845 ያነሰ ወይም እኩል የሆነ ማንኛውም ነገር ፣ ማዘዣው 1.75 ነው። እናም ይቀጥላል.

እሴቶቹ ያነሱ መሆናቸውን ስለምንመረምር እሴቶቹ እየጨመሩ ነው። እሴቶቹ እየቀነሱ ከሄድን የመጀመሪያው መግለጫው ሁል ጊዜ መግለጫ ከሆነ የመጀመሪያውን ያነባል። የመድኃኒት ማዘዣ በጣም ትንሹ ከሆነ ወዲያውኑ እንደ ትንሹ እንዲያውቀው እንፈልጋለን ፣ ስለዚህ ትንሹ እሴት እኛ የጀመርነው ነው። ከከፍተኛው እሴት ከፍ ያለ ማንኛውም ነገር ማለት ማዘዣው በእኛ መረጃ ክልል ውስጥ አይደለም ማለት ነው ፣ ስለዚህ “ያልታወቀ” ሕብረቁምፊ ንባብ ይሰጣል።

የሚመከር: