
اضطر العديد من الأوقات للتعامل مع فحص القلب في المؤسسات الطبية باستخدام جهاز تخطيط القلب. تقيس هذه الوحدة النشاط الحيوي للقلب ، وتسجيل النتيجة على شريط ورقي. تسجل أجهزة تخطيط القلب الحديثة نتيجة القياس ليس على الورق ، ولكن في الذاكرة الرقمية. ومع ذلك ، غالبًا ما يستخدم الشريط الورقي كوسيلة نهائية للمعلومات المسجلة. بصريا ، إنها ورقة طويلة بعرض صغير ، يتم لفها في لفة. على الورق ، بالإضافة إلى شبكة المليمتر ، يتم رسم رسم بياني معين كامل الطول ، والذي يعكس قانون القيمة المقاسة المتغيرة بمرور الوقت. القيمة المقاسة ، كما أفهمها ، هي الفرق المحتمل بين العملاء المحتملين. في معظم الأحيان ، يتم عرض العديد من الرسوم البيانية على شريط واحد في وقت واحد ، حيث يتم تسجيل الاختلافات المحتملة بين خيوط متعددة. ومع ذلك ، دون الخوض في تفاصيل الطب ، سننظر في المستقبل في أحد الجداول الرئيسية الأولى. بالإضافة إلى الرسوم البيانية ، يحتوي الشريط على معلومات نصية إضافية: مقياس أفقي (مم / ثانية) وعمودي (مم / مللي فولت) ومعدل ضربات القلب المقاس (نبضة في الدقيقة) والمزيد.
كانت هناك فكرة لتحويل هذا الرسم البياني إلى تنسيق صوتي ، وإعادة إنتاج النتيجة والاستماع إلى كيف يبدو.
وفقًا للتحليل الأولي ، يمكننا أن نستنتج أن تكوين تردد هذه الموجة ليس مشبعًا جدًا. في الواقع ، هذه ترددات منخفضة ، بما في ذلك الموجات فوق الصوتية ، والتي يعتقد أنها غير مسموعة. ومع ذلك ، سيكون من الممكن أن نرى كيف سيكرر مخروط مكبر الصوت اهتزازات مشابهة لـ "اهتزازات" القلب. في الواقع ، نظرًا لوجود دوائر تمييز سعوية على مسار انتشار الإشارة من بطاقة صوت الكمبيوتر إلى مضخم الصوت الجهير ، فإن اهتزازات الرأس الديناميكي لن تكرر الاهتزازات المعروضة على مخطط القلب بالضبط. ويتم توفير ذلك لم يتم تثبيت المرشحات التي تقطع الترددات المنخفضة للغاية في أي مكان. بالإضافة إلى ذلك ، ستكون هناك تشوهات غير خطية ، مصحوبة بتوافقيات متعددة عالية التردد. ومع ذلك ، مع عدم أخذ التحليل أعلاه في الاعتبار ، فإننا نطرح المشكلة على النحو التالي: تحويل الرسم البياني على الورق إلى تنسيق WAV بحيث عندما تفتح هذا الملف في محرر صوت ، يطابق الشكل الموجي النسخة الورقية ، علاوة على ذلك ، يتوافق مع النطاق الزمني.
تحتاج أولاً إلى تقدير عمق القياس (دقة الصوت الرقمي عموديًا). أنا أفكر في أحد المعايير: 8 أو 16 بت. الخيار الثاني (16 بت) هو 65536 عينة رأسية ، والتي تتوافق مع 65536 بكسل من الصورة ، وهي عبارة عن مسح أو صورة لرسم القلب. هذا كثير ، ولا معنى له. إذا أخذت 8 بتات - فهذه 256 عينة ، أو 256 بكسل من الصورة. الآن هذا خيار أكثر ملاءمة. في هذه الحالة ، سيكون النطاق الديناميكي للصوت 6 * 8 = 48 ديسيبل. لا أعرف النطاق الديناميكي الذي يحتويه مخطط القلب ، لكني لا أعتقد ذلك. الجهاز نفسه أكبر بشكل طبيعي ، ولكن لا مفر من وجود خطأ عند عرض مخطط القلب على الورق ، خاصة عندما يتعلق الأمر بالرسم المباشر بقلم. بالمناسبة ، عن هذا الأخير. لن آخذ في الاعتبار الأنماط القديمة المرسومة بقلم "شعاعي". شريط الورق المليمتر لمثل هذه المخططات هو محدد: يتم رسم الأقواس الرأسية بدلاً من الخطوط المستقيمة. أما المقياس الأفقي - معدل أخذ العينات - فسيتم حسابه بناءً على مقياس رسم القلب وحجم الصورة. تعتمد سرعة التشغيل على هذه المعلمة ، ويجب أن تتوافق مع "سرعة رسم القلب" الحقيقية.
يجب مسح ورق رسم القلب بالأبيض والأسود بظلال رمادية بدقة كافية. ثم تحتاج إلى تغيير حجم الصورة بحيث يتناسب مخطط القلب المطلوب مع شريط بعرض 256 بكسل. لقد وجدت العديد من الصور مع مخطط القلب على الإنترنت. كمثال ، خذ بعين الاعتبار اثنين منهم.

الصورة الأولى ، يمكن القول ، جاهزة تقريبًا. ارتفاع الصورة - 431. العرض - 1023. موجة عبر العرض تملأ الصورة بالكامل. لكنك تحتاج إلى ترك 256 في الارتفاع ، واقتصاص الصورة فوق وتحت بحيث تقع الموجة تقريبًا في المنتصف.

يوضح الشكل الثاني عدة مخططات قلب في وقت واحد. خذ أول واحد. بعد الاقتصاص ، حصلنا على صورة قياس 508 × 61.

بدون تمديد الصورة رأسيًا ، سنقوم بعمل صورة بارتفاع 256 ، ونملأ المساحة التي تم إنشاؤها ب الفراغ الأبيض. يجب أن تقع الموجة تقريبًا في المنتصف. عند القطع ، اخترت العرض 508 حتى أترك أكبر عدد ممكن من الخلايا المليمترية ، والتي يمكن رؤيتها أيضًا في الصورة.
يجب تحويل كلتا الصورتين إلى عرض لا يظهر فيه سوى الرسم البياني الأسود على خلفية بيضاء ولا شيء آخر. يتم ذلك بطريقة أولية. نظرًا لحقيقة أن الرسم البياني يتم رسمه بدانة أكبر بكثير من الشبكة المليمترية ، في محرر الرسومات باستخدام التعديلات "السطوع والتباين والتشبع" ، يمكنك تحقيق النتيجة المرجوة. إذا فشل التحويل المثالي ، فيجب محو "الزبالة" المتبقية المتبقية فوق الرسم البياني باستخدام أداة الممحاة. يجب حفظ جميع الصور بتنسيق BMP أحادي اللون. وبالتالي ، ستبقى الألوان البيضاء والسوداء فقط في الصورة.
قبل البدء في وصف الخوارزمية لتحويل الصور إلى WAV ، يجدر تحديد بعض الفروق الدقيقة التي تبسط البرمجة. يجب أن يتم تدوير الصور الناتجة 90 درجة عكس اتجاه عقارب الساعة (سيغير عرض الصورة وارتفاعها الأماكن). يعد ذلك ضروريًا لتوجيه بداية مخطط القلب مع بداية ملف BMP. من المعروف أن بيانات الألوان لكل بكسل في ملف BMP تتم كتابتها إلى ملف سطر بسطر ، بدءًا من الزاوية اليسرى السفلية. ثم تحتاج إلى فتح الصور في محرر "MS Paint" (لدي نظام Windows XP) وحفظه إلى 8 بت BMP (256 لونًا). بالطبع ، سيكون هناك "إعادة تعريف للمعلومات" ، ولكن مع هذا التنسيق ، فإن كل بكسل في الصورة يتوافق مع بايت واحد ، وهو أمر مناسب للغاية عند البرمجة. البايت "0" بكسل أسود ، والبايت "255" أبيض. يجب أن تكون النتيجة شيئًا كالتالي (هنا صورتان متصلتان ونصف إلى النصف).

أما بالنسبة لتنسيق الإخراج ، فسنخرجه ليس إلى ملف WAV قياسي ، ولكن إلى ملف بيانات RAW (PCM). كما أنه يبسط البرمجة ، لأنه عند الإخراج إلى WAV ، ما زلت بحاجة إلى الاهتمام برأس 44 بايت. في محرر الصوت الشائع Adobe Audition 1.5 ، يفتح ملف PCM دون مشاكل. علاوة على ذلك ، يمكنك حتى إخراج أعداد عشرية من بيانات PCM إلى عمود في ملف نصي ، بعد أن شكلت سابقًا رأس نص معين. من الغريب ، ولكن يتم فتح مثل هذه الملفات Adobe Audition أيضًا.
نصف خوارزمية التحويل. والخوارزمية بسيطة للغاية: تحتاج إلى تحليل كل سطر من ملف BMP من الأسفل إلى الأعلى. سيتألف التحليل من حساب وحدات البكسل البيضاء من اليسار إلى اليمين على التوالي حتى يتم مواجهة الأسود. يجب كتابة القيم الصحيحة غير السالبة التي تم الحصول عليها إلى ملف PCM الناتج في شكل ثنائي. يتطابق حجم ملف الإخراج تمامًا مع ارتفاع الصورة المعالجة. يتضمن عمق تكمية 8 بتات من تنسيق البيانات الصوتية PCM ترميز العينات وفقًا للمبدأ نفسه. القيمة "0" هي القيمة السالبة القصوى للعينة الصوتية ، والقيمة "255" هي القيمة الموجبة القصوى ، و "128" هي القيمة الصفرية (في المنتصف). على سبيل المثال ، سيحتوي ملف PCM لبيانات الصوت الصامت على وحدات البايت نفسها بقيمة "128". من الجدير بالذكر أن الصف قد يحتوي على عدة بيكسلات سوداء متتالية ، اعتمادًا على سمك خط مخطط القلب. لكن الخوارزمية الموصوفة "تلتقط" الغلاف العلوي ، وهو ما سيكون كافيًا. علاوة على ذلك ، فإن القمم الحادة لمخطط القلب الموجه لأعلى سيتم استيعابها بشكل أفضل بهذه الطريقة.
الآن يمكنك البدء في كتابة نص البرنامج. البرنامج المكتوب بلغة C بسيط للغاية ولا يحتاج إلى تعليقات تفصيلية.
#include <stdio.h> // , ; int main(){ // ; FILE *in,*out; // ; unsigned long int h,i; // ; unsigned char px,s; // ; in=fopen("1.bmp","rb"); // ; out=fopen("1.pcm","wb"); // ; fseek(in,22,SEEK_SET); // , fread(&h,4,1,in); // (4 ); for(i=0;i<h;i++){ // - ; fseek(in,0x436+i*256,SEEK_SET); // i- s=0; // ( ); do{ // ; fread(&px,1,1,in); // ; s+=1; // ; }while(px); // , ; fwrite(&s,1,1,out); // ; } fclose(in); // ; fclose(out); // ; return 0; // ; }
بعد تنفيذ البرنامج على ملف "1.bmp" ، سيتم إنشاء ملف "1.pcm" في نفس الدليل مع البرنامج. عندما تحاول فتح ملف في Adobe Audition ، يجب أن تنبثق النافذة التالية.

تحتاج إلى تحديد "Mono" و "8-bit" وطباعة تردد أخذ العينات في حقل الإدخال بناءً على الحساب: f = h / (s / v) ، حيث h هو ارتفاع الصورة (وهو أيضًا عدد العينات في الصوت) ، s - طول مخطط القلب بالملليمتر ، v هو مقياس مخطط القلب بالملليمتر / ثانية. تتم كتابة المعلمة الأخيرة على مخطط القلب. لا يُكتب أي شيء على مخطط القلب الأول ، لكن المقياس ، كقاعدة عامة ، غالبًا ما يكون 25 مم / ثانية. يوضح الشكل أدناه حساب معدلات العينات في Excel لأمثلةنا.

كما ذكر أعلاه ، ندخل القيم اللازمة لترددات أخذ العينات لكل من الأمثلة في المجال المقابل. يمكنك حتى إدخال الكسور العشرية ، على أي حال سيكون هناك تقريب تلقائي إلى أقرب كل.

من خلال النقر على "موافق" ، نتفق على أننا نعمل مع عينات "غير موقعة من 8 بت" (ستكون هناك نافذة أخرى) ، وبعد ذلك سيتم توسيع الشكل الموجي لملفنا في المجال الرئيسي لمحرر الصوت. لاحظ أنه سيتم تقديم هذا العرض "مقلوبًا" ، وللتوافق التام مع النسخة الورقية ، يجب عليك عكس الموجة في القائمة المقابلة. نتيجة لذلك ، سيبدو هذا.

يبدو مخطط القلب الثاني "أكثر هدوءًا" ، نظرًا لأنه لم يكن كبيرًا في الحجم في الأصل.

لسوء الحظ ، لا تسمح لك جميع بطاقات الصوت بتشغيل الصوت بتردد عشوائي للعينات ، وبشكل أدق ، فإن الغالبية العظمى لا تعرف كيف. من أجل تشغيل الملف بشكل صحيح ، يجب عليك تنفيذ الوظيفة "تحويل نوع العينة". سنقوم بالتحويل إلى أقرب قيمة قياسية تبلغ 8000 هرتز ، وفي نفس الوقت نرفع الدقة في السعة إلى 16 بت. هذا الأخير ضروري للدقة في مرحلة الاستيفاء أثناء الاختزال. إذا تركت 8 بتات ، فستمتلئ المنطقة المتبقية من الطيف بضجيج التكمية. بالمناسبة ، يمكن تنفيذ هذا الإجراء برمجيًا في مرحلة تحويل BMP-PCM ، حتى باستخدام الاستيفاء. لكن أحد الأهداف كان بساطة كود البرنامج.
بعد عملية الاختزال ، يمكنك الاستماع والاستمتاع بالنتيجة. يمكنك حفظ النتيجة في ملف wav أو mp3 قياسي. يبدو بالضبط نفس ما توقعته في الأصل.
يتيح لك
هذا الرابط تنزيل أرشيف rar الذي يحتوي على ملفين WAV مع النتيجة.