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

اكتب دالة `calculate_hog(image)` تأخذ صورة ذات تدرج رمادي مُدخلة وتُرجع تمثيل HOG للصورة.

لحساب HOG للصورة، اتبع الخطوات التالية:

1. قسم الصورة إلى مناطق صغيرة تسمى الخلايا. تمثل كل خلية كتلة ذات حجم ثابت من البكسل.
2. لكل خلية، حساب حجم التدرج والاتجاه. يمثل حجم التدرج شدة التغيير في قيم البكسل، بينما يمثل اتجاه التدرج اتجاه التغيير.
3. قم بتجميع عدة خلايا معًا لتكوين كتلة. تحتوي الكتلة على خلايا متعددة وتستخدم لتطبيع تمثيل HOG.
4. بالنسبة لكل كتلة، قم بتسلسل مقادير التدرج للخلايا داخل الكتلة. وهذا يشكل تمثيل HOG للكتلة.
5. كرر الخطوة السابقة لجميع الكتل الموجودة في الصورة للحصول على تمثيل HOG النهائي.

يجب أن تستخدم الوظيفة المعلمات التالية لحساب تمثيل HOG:
- `الاتجاهات`: عدد صناديق الاتجاه المستخدمة لحساب التدرجات.
- `pixels_per_cell`: حجم الخلايا بالبكسل.
- `cells_per_block`: عدد الخلايا التي سيتم تجميعها معًا لتكوين كتلة.
- `block_norm`: طريقة التسوية التي سيتم تطبيقها على كل كتلة.

بعد حساب تمثيل HOG، قم بعرض الصورة ذات التدرج الرمادي الأصلية وصورة HOG الناتجة جنبًا إلى جنب.

مثال على الاستخدام:
```بيثون
الصورة = Load_grayscale_image("path/to/image.jpg")
hog_image = احسب_hog(صورة)

الشكل، الفأس = plt.subplots(1, 2,Figsize=(12,9),subplot_kw=dict(xticcks=[], yticks=[]))

الفأس[0].imshow(صورة)
ax[0].set_title("الصورة الأصلية")
الفأس[1].imshow(hog_image)
ax[1].set_title("صورة HOG")

عرض بلت ()
```
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}