مكافحة التعرج: طرق المفضلة لتحديد أقصى تردد؟

StackOverflow https://stackoverflow.com/questions/591476

  •  09-09-2019
  •  | 
  •  

سؤال

لقد كنت أقرأ قليلا على التعرجات المضادة، ويبدو أنها منطقية، ولكن هناك شيء واحد لست متأكدا جدا. كيف يمكنك بالضبط الحد الأقصى لتكرار الإشارة (في سياق الرسومات).

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

دعنا نقول إنها لصورة ثلاثية الأبعاد والمهدية والجريسكيل (بالبكسل). هل أنا صحيح في افتراض أنك تستطيع ببساطة مسح خط البكسل بأكمله (في المجال المكاني) بحثا عن الحد الأدنى من التذبذب والكفطاء من أن أصغر التذبذب سيكون الحد الأقصى للتردد؟

القيم السابقة {23،26،28،22،48،49،49،51،49 دينار

التردد: يتعلق بضبط {}

(1/2) = .5 : {28,22}

(1/4) = .25 : {22,48,49,51}

لذلك سوف يكون 0.5 الحد الأقصى للتردد؟

وماذا ستكون الطريقة المثالية لحساب هذا لخط البكسل مماثل كواحد أعلاه؟

وفي مذكرة نظرية أكثر، ماذا لو كانت مدخلات أخذ العينات لانهائية (أشبه العالم الحقيقي)؟ هل ستكون عملية صالحة نوعا مثل:

Predetermine a decent interval for point sampling
Determine max frequency from point sampling
while(2*maxFrequency >  pointSamplingInterval)
{
pointSamplingInterval*=2
Redetermine maxFrequency from point sampling (with new interval)
}

أعرف أن هذه الخوارزميات محفوفة بعدم الكفاءة، فما هي بعض الطرق المفضلة؟ (لا تبحث عن شيء محسن مجنون، فقط مفاهيم أفضل بشكل أساسي)

هل كانت مفيدة؟

المحلول

الطريقة المناسبة للتعامل مع هذا باستخدام تحويل فورييه (في الممارسة العملية أو FFT أو سريع فورييه التحول)

تعمل النظرية على النحو التالي: إذا كان لديك مجموعة من البكسل مع اللون / الرمادي، فيمكننا القول أن الصورة ممثلة بقلم بكسل في "المجال المكاني"؛ وهذا هو، يحدد كل رقم فردي الصورة في موقع مكاني معين.

ومع ذلك، فإن ما نريده حقا هو تمثيل للصورة في "مجال التردد". بدلا من كل رقم فردي يحدد كل بكسل، يمثل كل رقم سعة تردد معين في الصورة ككل.

الأداة التي تتحول من "المجال المكاني" إلى "مجال التردد" هو تحويل فورييه. سيكون إخراج FT سلسلة من الأرقام التي تحدد المساهمة النسبية للترددات المختلفة.

من أجل العثور على أقصى تردد، يمكنك تنفيذ FT، وإلقاء نظرة على المكشوف التي تحصل عليها للحصول على الترددات العالية - فهي مجرد مسألة البحث من أعلى تردد لأسفل حتى تضغط على عتبة "الحد الأدنى لسهولة السعة".

يمكنك رمز FFT الخاص بك، ولكن من الأسهل بكثير في الممارسة استخدام مكتبة معبأة مسبقا مثل FFTW.

نصائح أخرى

لا تفحص إشارة لأعلى تردد ثم اختر تردد أخذ العينات الخاص بك: اختر تردد أخذ العينات مرتفع بما يكفي لالتقاط الأشياء التي تريد التقاطها، ثم أنت منقي إشارة إلى إزالة ترددات عالية. يمكنك رمي كل شيء أعلى من نصف معدل أخذ العينات قبل أنت تذوقها.

هل أنا صحيح في افتراض أنك تستطيع ببساطة مسح خط البكسل بأكمله (في المجال المكاني) بحثا عن الحد الأدنى من التذبذب والكفطاء من أن أصغر التذبذب سيكون الحد الأقصى للتردد؟

إذا كان لديك خط بكسل، فسيتم بالفعل أخذ العينات بالفعل. بعد فوات الأوان لتطبيق مرشح الحواف. أعلى تردد يمكن أن يكون حاضرا هو نصف تردد أخذ العينات ("1 / 2PX"، أعتقد).

وفي مذكرة نظرية أكثر، ماذا لو كانت مدخلات أخذ العينات لانهائية (أشبه العالم الحقيقي)؟

نعم، هذا عند استخدام المرشح. أولا، لديك وظيفة مستمرة، مثل صورة واقعية حقيقية (معدل أخذ العينات غير المعتادة). ثم تقوم بتصفيةه لإزالة كل شيء أعلاه FS / 2، ثم تذوقه في FS (رقمنة الصورة إلى بكسل). الكاميرات لا تفعل في الواقع أي تصفية، وهذا هو السبب في الحصول عليها موانع أنماط عند تصوير الطوب، إلخ.

alt text

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

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

alt text

أعتقد أن هذه المقالة من موقع O'Reilly قد تكون مفيدة لك أيضا ... http://www.onlamp.com/pub/a/python/2001/01/31/numerically.html. ... في هناك يشيرون إلى تحليل التردد لملفات الصوت ولكنك يعطيك الفكرة.

أعتقد أن ما تحتاجه هو تطبيق تحليل فورييه (http://en.wikipedia.org/wiki/fourier_analysis.). لقد درست هذا ولكن لم أستخدمها أبدا، لذا اعتبرها مع قليل من الملح، لكنني أصدق إذا قمت بتطبيقه بشكل صحيح على مجموعة الأرقام، فستحصل على مجموعة من الترددات التي تعد مكونات السلسلة ثم يمكنك اختيار أعلى واحد.

لا أستطيع أن أشير إليك على قطعة من التعليمات البرمجية التي تفعل هذا لكنني متأكد من أنه سيكون هناك في مكان ما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top