تصویرِ انتگرالی یک جدولِ جمعِ پیشوندیِ دوبعدی است. پس از ساختِ آن،جمعِ یک مستطیلِ راستگوشه با چهار گوشه به دست میآید؛ اما هزینهٔ ساخت و حافظه همچنان وجود دارد. این تمرین بدونِ عکس یا کتابخانهٔ بینایی،همهٔ مستطیلهای یک شبکهٔ عددی را با جمعِ مستقیم کنترل میکند.
حاشیهٔ صفر برای کدام اندیس است؟
شبکهٔ اصیل۳در۴،سطرهای[۱،۲،۳،۴]،[۵،۶،۷،۸]و[۹،۱۰،۱۱،۱۲]دارد. جدولِ پیشوند۴در۵است: سطرِ صفر و ستونِ صفر،صفر میمانند. P[y,x]جمعِ سطرهای قبل ازyوستونهای قبل ازxرا نشان میدهد؛ خانهٔ خودِ مرز در جمع نیست.
برای ساختِ هر خانه،مقدارِ پیکسل به پیشوندِ بالا و چپ اضافه و گوشهٔ مشترک کم میشود. کد از Python intاستفاده میکند و در این دامنه سرریزِ ثابتعرضِ dtypeندارد. این را رفتارِ یکسانِ هر آرایهٔ۳۲بیتی در کتابخانهٔ دیگر معرفی نمیکنیم.
مستطیلِ نیمهباز را دقیق بنویسیم
ناحیهٔ اصلی،سطرهای[۱،۳)وستونهای[۱،۴)است. یعنی۶،۷،۸،۱۰،۱۱و۱۲که جمعشان۵۴است. مرزِ بالا شامل ومرزِ پایان خارج است؛ تبدیلِ این قرارداد به «هر دو سر شامل» بدونِ تغییرِ فرمول،اشتباه میشود.
اگر فقط P[۳،۴]را بخوانیم،جمعِ کلِ شبکه۷۸را میگیریم،نه ناحیهٔ داخلی. باید دو نوارِ بالایی و چپ را کم و ناحیهٔ مشترکِ دوبارکمشده را یک بار اضافه کنیم. این inclusion-exclusionدلیلِ چهار گوشه است،نه یک میانبُرِ وابسته به مثبتبودنِ پیکسلها.
چهار گوشه را کنار هم بگذاریم
فرمولِ ناحیه P[y۱,x۱]−P[y۰,x۱]−P[y۱,x۰]+P[y۰,x۰]است. در این متن y۰,x۰آغاز وy۱,x۱پایاناند. ترتیبِ سطر و ستون در جدولِ Pythonرا با قراردادِ x,yدر مستنداتِ تصویری اشتباه نگیریم؛ نامِ متغیرها بخشی از خواندنِ درستِ فرمول است.
وقتی آغاز و پایانِ یک محور برابر باشند،مستطیل خالی و جمع صفر است. ناحیهٔ تکپیکسل،کلِ تصویر و مرزِ گوشه نیز با همین فرمول کار میکنند. اعتبارسنج،بازهٔ وارونه را خودکار مرتب نمیکند؛ اصلاحِ بیخبر میتواند خطایِ درخواستکننده را پنهان کند.
تمامِ ۱۵۰مستطیل را کنترل کنیم
همهٔ انتخابهای مرتبِ دو مرز از۰تا۳و۰تا۴،۱۵۰مستطیلِ شاملِ خالی میسازند. oracleبا sliceِ سطرها و ستونها،عددها را مستقیم جمع میکند؛ از جدولِ پیشوند استفاده نمیکند. هر۱۵۰خروجی دقیقاً برابرند.
تکتکِ خانههای جدولِ پیشوند نیز با جمعِ مستقلِ ناحیهٔ ازمبدأ کنترل میشوند. شبکهٔ دوم با عددِ منفی و صفر،همین آزمونها را میگذراند. مثبتبودنِ عددها فرضِ لازمِ اصلِ جمع نیست؛ قراردادِ محدودِ ما فقط صحیحبودن و کرانِ قدرمطلق را میخواهد.
پس از تغییرِ پیکسل،جدول قدیمی است
در نسخهٔ جدا،خانهٔ سطر۱ستون۱را۱۰بیشتر میکنیم. پرسوجوی همان ناحیه روی پیشوندِ قدیمی هنوز۵۴میدهد،اما بازسازیِ جدول از شبکهٔ تازه۶۴میدهد. بنابراین جدولِ آماده،خودکار به تغییرِ داده آگاه نیست.
Fenwickیکبعدی بهروزرسانیِ نقطهای دارد؛ این فایل یک شبکهٔ ثابت و بازسازیِ صریح دارد. از هزینهٔ ثابتِ چهار lookupبرای query،هزینهٔ ثابتِ تغییرِ زندهٔ هر پیکسل نتیجه نمیگیریم. ساختO(HW)و حافظهٔ حاشیهدار جدا از پرسوجو هستند.
هشت ورودیِ نامعتبر،از شکلِ خالی یا ناهموار تا پیکسلِ بولین یا اعشاری،بعدِ بیش از۶،بازهٔ وارونه یا بیرون از دامنه و مرزِ بولین رد میشوند. هیستوگرام توزیعِ مقدار را میشمارد،نه جمعِ این مستطیل. ادامه در مبانی هوش مصنوعی؛ OpenCV،OCR،عکسِ واقعی،مستطیلِ چرخیده یا قابلیتِ محصولِ اپرا اجرا نشده است.
فایل تمرین و منبع
کد کاملِ تمرینِ مستقل و کنترلها؛ Python · ورودی و تمامِ خروجیِ اجرای واقعی؛ JSON
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.