Peningkatan Kontras Gambar Grayscale Menggunakan Operator Morfologis
Cara mudah untuk meningkatkan kontras gambar grayscale menggunakan Operator Morfologi di OpenCV
Pengantar
Peningkatan Kontras (Contrast Enhancement) adalah teknik Image Processing yang sangat umum untuk meningkatkan fitur dalam gambar kontras rendah. Beberapa metode seperti Contrast Stretching, Histogram Equalization, Adaptive Histogram Equalization, Contrast-Limited Adaptive Histogram Equalization atau CLAHE, dll. telah digunakan untuk meningkatkan kontras gambar. Pada artikel ini akan melihat metode lain dari Peningkatan Kontras yang dilakukan dengan menggunakan kombinasi Transformasi Morfologi.
Apa itu Transformasi atau Operator Morfologi ? Transformasi Morfologi atau Operator Morfologi adalah transformasi citra sederhana yang biasanya diterapkan pada citra biner, tetapi dapat juga diterapkan pada citra grayscale. Ada berbagai jenis Transformasi Morfologi seperti Erosi, Dilation, Opening, Closing, Gradient, Top Hat dan Black Hat. Dua komponen utama dari transformasi ini adalah gambar input dan kernel yang dikenal sebagai Structuring Element (SE). Sebelum melompat ke berbagai jenis Transformasi Morfologi secara rinci, mari memahami Elemen Penataan.
Apa itu Structuring Element (SE)?
Structuring Element (SE) adalah lingkungan sekitar setiap piksel yang diperiksa saat melakukan operasi morfologi. Elemen Penataan dapat memiliki bentuk dan ukuran yang berbeda, dan mengubahnya dapat secara signifikan memengaruhi kinerja transformasi. Ada tiga bentuk Elemen Penataan yang disediakan oleh OpenCV — Rectangular, Elliptical, dan Cross-Shaped. Gambar di bawah menunjukkan ketiga bentuk tersebut.
Jenis Operator Morfologi
Macam-macam Operator Morfologi adalah :
- Erosion— Menurut Dokumentasi OpenCV, operator Erosion bekerja mirip dengan erosi tanah. Ini "mengikis", atau dengan kata sederhana, menghilangkan batas-batas objek latar depan dalam gambar. Piksel pada batas objek latar depan dihapus. Ini mengurangi ukuran objek dalam gambar.
- Dilation— Dilation bekerja persis berlawanan dengan erosi. Ini "melebarkan" atau memperluas batas-batas objek latar depan yang pada gilirannya meningkatkan ukuran objek dalam gambar. Ini berguna jika ingin menggabungkan bagian objek latar depan yang rusak.
- Opening — Operasi Opening digunakan untuk menghilangkan Noise. Dilakukan dengan terlebih dahulu menerapkan operasi erosi, diikuti dengan operasi dilasi. Operasi erosi pertama-tama menghilangkan semua area noise kecil dari gambar dan kemudian dilasi diterapkan untuk mengembalikan ukuran asli objek.
- Closing — Closing adalah kebalikan dari Opening, yang berarti bahwa pelebaran diterapkan terlebih dahulu diikuti oleh erosi. Ini berguna untuk menggabungkan atau mengisi titik-titik kecil yang ada di objek latar depan, sambil mempertahankan ukuran objek.
- Gradient — Gradient Morfologi suatu citra diperoleh dengan mengurangkan hasil erosi dari hasil dilasi. Hasil dari operasi Gradient adalah outline dari objek foreground pada gambar.
- Top Hat / White Hat— Top Hat Transform, juga dikenal sebagai White Hat Transform, diperoleh dengan menghapus atau mengurangi Opening gambar dari gambar aslinya. Operator ini memberi fitur cerah pada gambar yang lebih kecil dari Structuring Element.
- Black Hat / Bottom Hat— Transformasi Black Hat, juga dikenal sebagai Transformasi Bottom Hat, diperoleh dengan menghapus atau mengurangi Closing gambar dari gambar aslinya. Operator ini memberi fitur gelap pada gambar yang lebih kecil dari Elemen Penataan.
Catatan: Transformasi Top Hat dan Black Hat lebih cocok untuk gambar Grayscale.
Bagaimana Transformasi Morfologis membantu dalam Peningkatan Kontras?
- Membuat area terang pada gambar menjadi lebih cerah.
- Membuat daerah gelap pada gambar menjadi lebih gelap.
Code
pip install opencv-python
import cv2 as cv
Data gambar dalam repositori ini telah dikumpulkan dari Institute for Diagnostic and Interventional Radiology, Hannover Medical School, Hannover, Jerman dan dilisensikan di bawah Creative Commons Attribution 3.0 Unported.
filename = # path to the image fileimg = cv.imread(filename,0)
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE,(5,5))
# Top Hat TransformtopHat = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)# Black Hat TransformblackHat = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel)
res = img + topHat - blackHat
Kesimpulan
Poin yang perlu diingat
- Metode ini mungkin tidak bekerja seefisien metode Peregangan Kontras asli karena noise yang diperkenalkan pada gambar, saat kami terus meningkatkan ukuran Structuring Element.
- Karena Structuring Element pada dasarnya adalah ukuran lingkungan yang perlu dipertimbangkan saat menerapkan transformasi, output juga akan bergantung pada ukuran gambar input. Misalnya, kernel (35,35) untuk gambar berukuran 1000 x 1000 akan membentuk wilayah yang lebih kecil dibandingkan dengan kernel (35,35) untuk gambar 250 x 250. Dengan demikian, mengubah ukuran gambar juga akan mempengaruhi output dari metode ini.
- Karena Transformasi Top dan Black Hat masing-masing memberi fitur yang lebih terang dan lebih gelap yang lebih kecil daripada Structuring Element, metode Peningkatan Kontras ini akan bekerja dengan baik jika ukuran fitur yang akan ditingkatkan lebih kecil dari ukuran Structuring Element yang dipilih. Dengan demikian, menjadi sulit untuk secara akurat meningkatkan kontras fitur yang lebih besar, karena ukuran kernel yang lebih besar akan memperkenalkan area noise yang lebih besar di background gambar.
References
- OpenCV: Morphological Transformations https://docs.opencv.org/3.4/d9/d61/tutorial_py_morphological_ops.html
- Kushol R., Nishat R. M., Rahman A. B. M. A., Salekin M. M., “Contrast Enhancement of Medical X-Ray Image Using Morphological Operators with Optimal Structuring Element,” arXiv:1905.08545v1 [cs.CV] 27 May 2019
- Hinrich B. Winther, Hans Laser, Svetlana Gerbel, Sabine K. Maschke, Jan B. Hinrichs, Jens Vogel-Claussen, Frank K. Wacker, Marius M. Höper, Bernhard C. Meyer, “COVID-19 Image Repository,” DOI: 10.6084/m9.figshare.12275009