كتابة تمديد التباين && كشف الحواف

@

تمديد التباين

التباين هو مقياس لنطاق قيم الشدة في الصورة ويُعرّف بأنه الفرق بين القيمة القصوى لقيمة البكسل والقيمة الدنيا لها. التباين الكامل لصورة بدقة 8 بت هو $ 255 (max) – 0 (min) = 255$.

أي قيمة أقل من ذلك تعني أن الصورة ذات تباين أقل مما يمكن. تحاول عملية تمديد التباين تحسين تباين الصورة من خلال تمديد نطاق قيم الشدة باستخدام التحجيم الخطي.

افترض أن $𝐼$ هي صورة الإدخال الأصلية و$𝑂$ هي صورة الإخراج. لتكن $𝑎$ و \𝑏 هما القيمتان الدنيا والقصوى المسموح بهما للبكسل (بالنسبة لصورة بدقة 8 بت، يعني ذلك أن $𝑎$ = 0 و $𝑏$ = 255)، ولتكن $𝑐$ و $𝑑 $ هما أدنى وأعلى قيم للبكسل موجودة في $𝐼$. عندئذٍ، تُعطى الصورة الممددة التباين $𝑂$ بواسطة الدالة:

\( 𝑂(𝑥, 𝑦) = (𝐼(𝑥, 𝑦) − 𝑐)( \frac {b-a}{d-c}) +a\)

كشف الحواف

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

$$ $ \nabla =(\frac{\partial I}{\partial x},\frac{\partial I}{\partial y})$ $$

نظرًا لأن الصورة 𝐼 متقطعة، فنحن بحاجة إلى تقريب المشتقات المستمرة $\frac{\partial I}{\partial x}$ باستخدام الفروق المحدودة. ومن الأمثلة البسيطة لنواة الالتفاف التي تقوم بحساب الفروق المحدودة مرشحات سوبل (Sobel filters) المعرفة كما يلي:

$$ $ S_x = \begin{bmatrix} 1 & 0 & -1\\ 2 & 0 & -2 \\ 1 & 0 & -1 \ \end{bmatrix}$ $$
$$ $ S_y = \begin{bmatrix} 1 & 2 & 1\\ 0 & 0 & -0 \\ -1 & -2 & -1 \end{bmatrix}$ $$
heading
code
def edge_detection(image, filter):
    image_x = convolution2D(image, filter)
 
    plt.imshow(image_x, cmap='gray')
    plt.title("الحافة الأفقية S_x")
    plt.show()
 
    image_y = convolution2D(image, np.flip(filter.T, axis=0))
 
 
    plt.imshow(image_y, cmap='gray')
    plt.title("الحافة العمودية S_y")
    plt.show()
    G_magnitude = np.sqrt(np.square(image_x) + np.square(image_y))
    max_value = get_max_ele(G_magnitude)
    print("القيمة القصوى هي :",max_value,"نحتاج إلى تسويتها")
    # تسوية النتيجة
    G_magnitude = G_magnitude * 255.0 / max_value
 
    plt.imshow(G_magnitude, cmap='gray')
    plt.title("النتيجة")
    plt.show()
 
    return G_magnitude
<

评论 · Comments (0)

需要 MetaMask 等以太坊钱包,签名不花 gas。