جرب هذا:
rhos[x + (y)*(correct_stride) ] = x;
WHERE repact_stride = image.width / 60 ؛
يتم فهرسة المعرف العالمي من 0 إلى أعلى. إنه يشكل تسلسلًا مثل 0،1،2،3،4 ... وليس 1،2،3،4 ... إذا كنا صارمين ، فأنت تستدعي سلوكًا غير محدد لأن فهرسك الأول يقوم بكتابة خارج الذاكرة أنت في الأصل مخصص.
ايضا
float[] rhos = new float[(int)(image.Width / 60) * (int)(image.Height / 60)];
يقلقني قليلاً. هل صورتك 3600x3600 بالضبط؟ وإلا فإن خطوتك خاطئة. يجب أن يكون متغير NeighbourhoodSize هو عرض قطاع الصورة الذي تستخدمه.