Bilgisayarlı Görü - Vizeye Kadar Özet
Document Details
Tags
Summary
Bu belge, bilgisayarlı görme, görüntü işleme ve uygulamaları hakkında bir genel bakış sunmaktadır. Bilgisayarlı görme, makinelerin görsel dünyayı algılamasını, anlamasını ve yorumlamasını sağlayan bir bilim dalıdır. Görüntü işleme, görüntülerin iyileştirilmesi veya manipüle edilmesi ile ilgili tekniklerden oluşur. Uygulama alanları, otomatik sürüş, tarım, perakende, tıbbi görüntü analizi, robotik ve güvenlik sistemlerini içermektedir.
Full Transcript
Temel Bilgiler ============== Giriş, Tarihçe, Kullanım Örnekleri, Kullanılan Yazılımlar **Bilgisayarlı Görü Alanının Tarihçesi** Bilgisayarlı görü (Computer Vision), 1960\'larda bilgisayarların görsel dünyayı algılama ve anlama yeteneğini geliştirmeye yönelik çalışmalarla başladı. 1970\'lerde tem...
Temel Bilgiler ============== Giriş, Tarihçe, Kullanım Örnekleri, Kullanılan Yazılımlar **Bilgisayarlı Görü Alanının Tarihçesi** Bilgisayarlı görü (Computer Vision), 1960\'larda bilgisayarların görsel dünyayı algılama ve anlama yeteneğini geliştirmeye yönelik çalışmalarla başladı. 1970\'lerde temel algoritmalar (örneğin, Hough dönüşümü ve optik akış) geliştirilirken, 1980\'ler ve 1990\'larda yapay zeka ve öğrenme yaklaşımları bu alanı ileriye taşıdı. 2010\'larda derin öğrenmenin yükselişi, özellikle AlexNet ve YOLO gibi modellerle bilgisayarlı görüde devrim yarattı. Günümüzde bu teknoloji, otonom araçlardan tıbbi görüntülemeye kadar geniş bir uygulama yelpazesinde kullanılmaktadır ve gelecekte daha da yaygınlaşması beklenmektedir. Bilgisayarlı Görü (Computer Vision) Nedir? ------------------------------------------ Bilgisayarlı görü, makinelerin ve bilgisayarların görsel dünyayı algılamasını, anlamasını ve yorumlamasını sağlamaya yönelik bir bilim dalıdır. Bu alan, bir görüntüden veya bir video akışından elde edilen verileri analiz ederek, o verilerden anlamlı bilgiler çıkarmayı amaçlar. Bilgisayarlı görünün nihai hedefi, insan görme yeteneğini taklit ederek, makinelerin nesneleri tanıyabilmesini, anlamlandırabilmesini ve bu bilgilere dayalı kararlar alabilmesini sağlamaktır. Görüntü İşleme (Image Processing) Nedir? ---------------------------------------- Görüntü işleme, dijital görüntüler üzerinde yapılan çeşitli işlemleri ifade eder. Bu işlemler, görüntülerin iyileştirilmesi (enhancement), gürültünün giderilmesi, segmentasyon (görüntüdeki belirli bölümlerin ayrılması), sıkıştırma, restorasyon (görüntülerin onarılması) ve diğer manipülasyonlar olabilir. Görüntü işleme, bilgisayarlı görü sistemleri için ön işleme aşamasında kullanılan temel teknikleri içerir. Bilgisayarlı Görü ve Görüntü İşleme Arasındaki Farklar ------------------------------------------------------ **Görüntü İşleme**: Temel amacı, bir görüntüyü iyileştirmek veya manipüle etmektir. Bu iyileştirmeler, bir görüntünün kalitesini artırmayı veya belirli bir özellik üzerinde yoğunlaşmayı içerir. Örneğin, bir görüntüdeki gürültüyü gidermek, kontrastı artırmak veya keskinliği artırmak gibi işlemler görüntü işleme teknikleridir. **Görüntü İşleme** Medikal görüntüleme (örneğin, MRI görüntülerinin iyileştirilmesi), uydu görüntülerinin analizi, fotoğraf düzenleme yazılımları, güvenlik kameraları gibi birçok alanda kullanılır. **Bilgisayarlı Görü**: Bir görüntüden veya video akışından anlamlı bilgiler çıkarma ve bu bilgileri kullanarak karar verme sürecidir. Bilgisayarlı görü, genellikle bir sistemin çevresini anlaması ve bu anlamaya dayalı eylemler gerçekleştirmesi gereken durumlarda kullanılır. Örneğin, otonom bir aracın yolda engelleri tanıması ve bu bilgilere göre manevralar yapması bilgisayarlı görüye bir örnektir. **Bilgisayarlı Görü** Yüz tanıma sistemleri, otonom araçlar, nesne tespiti, hareket takibi, robotik uygulamalar, artırılmış gerçeklik (AR) ve endüstriyel otomasyon gibi alanlarda kullanılır. Özetle; **Bilgisayarlı Görü**, daha geniş bir kapsamda çalışır ve görüntü işlemeyi, görsel veriden anlamlı bilgiler çıkarmanın bir aşaması olarak kullanır. **Görüntü İşleme**, temel olarak görüntülerin işlenmesi ve iyileştirilmesi ile ilgilenirken, Bilgisayarlı Görü bu işlenmiş görüntülerden anlam çıkarmak ve bu bilgileri daha ileri düzey uygulamalar için kullanmakla ilgilenir. Bilgisayarlı Görü ile görsel bilgilerin işlenmesine yönelik otomasyon görevlerinin çözülmesi için şu yöntemler uygulanabilir: Bilinen nesnelerin **tespiti ve tanınması** Bilinmeyen nesnelerin **geometrik yapılarının elde edilmesi** Nesnelerin **konum ve yönünün hesaplanması** Nesnelerin **mekânsal özelliklerinin ölçülmesi** (mesafeler, boyutlar vb.) Nesne **hareketinin ölçülmesi** Yüzey **dokusu ve renginin ölçülmesi** ***Bilgisayarla görme zordur çünkü*** gözlemlenen birimler (pikseller), analiz birimleri değildir; yani, tek başına bir piksel, görüntü analizi için gerekli bilgileri vermez. Ayrıca, gürültülü, eksik veya eksik verilerle çalışmak, fiziksel ölçümlerin zorlukları ve görüntü özelliklerini matematiksel olarak modellemenin zorlukları bu süreci daha da karmaşık hale getirir. Görüntü Elde Etmede Faydalanılan Sensör Tipleri ----------------------------------------------- ![](media/image2.png) **Visible light: a narrow band of electromagnetic radiation →\ 380nm (blue) - 780nm (red)** 1\. Optik (kamera): Görünür ışığı algılayıp dijital görüntülere dönüştüren sensörlerdir. Günlük hayatta kullandığımız fotoğraf makineleri ve akıllı telefon kameraları bu tür sensörlere örnektir. 2\. Kızılötesi: Isı değişimlerini algılayan sensörlerdir. Cisimlerin yaydığı kızılötesi radyasyonu tespit ederek ısı haritaları oluşturabilirler. Gece görüş sistemleri ve termal kameralar bu teknolojiyi kullanır. 3\. X-ışını (BT Taraması): X-ışınlarını kullanarak vücudun iç yapılarının görüntülerini oluşturur. Tıpta yaygın olarak kullanılır, özellikle kemik ve akciğer görüntülemede etkilidir. 4\. Manyetik (MRG): Güçlü manyetik alanlar ve radyo dalgaları kullanarak vücudun iç organlarının detaylı görüntülerini oluşturur. Yumuşak dokuları görüntülemede çok etkilidir. 5\. Ultrason (akustik enerji): Yüksek frekanslı ses dalgalarını kullanarak vücut içi yapıların görüntülerini oluşturur. Hamilelik takibinde ve kalp muayenelerinde sıkça kullanılır. 6\. Elektron Mikroskobu: Elektron demetleri kullanarak çok küçük nesnelerin aşırı büyütülmüş görüntülerini oluşturur. Hücre yapıları ve nanomateryal incelemelerinde kullanılır. 7\. Bilgisayar üretimi görüntüler: Matematiksel algoritmalar ve yazılımlar kullanılarak oluşturulan yapay görüntülerdir. Fraktal desenleri ve animasyonlar bu kategoriye girer, bilimsel görselleştirmede ve eğlence sektöründe kullanılır. Uygulama Alanları ----------------- **Bilgisayarlı Görünün Günlük Hayattaki Ve Endüstriyel Uygulama Alanları** +-----------------------------------+-----------------------------------+ | **Uygulama Alanı** | **Açıklama** | +===================================+===================================+ | **Otomatik Sürüş (Otonom | Otonom araçlar, çevrelerindeki | | Araçlar)** | nesneleri tanıma, yolda engelleri | | | tespit etme ve trafik | | | işaretlerini algılama gibi | | | görevleri yerine getirmek için | | | bilgisayarlı görü teknolojilerini | | | kullanır. Bu sistemler, güvenli | | | sürüş için hayati önem taşır ve | | | araçların kendi kendine | | | navigasyon yapabilmesini sağlar. | +-----------------------------------+-----------------------------------+ | **Tarım ve Yiyecek İşleme** | Bilgisayarlı görü, tarımda mahsul | | | izleme, zararlı tespiti ve kalite | | | kontrol gibi alanlarda | | | kullanılır. Gıda işleme | | | tesislerinde, ürünlerin | | | sınıflandırılması ve yabancı | | | maddelerin tespiti gibi işlemler | | | de bu teknoloji ile | | | gerçekleştirilir. | +-----------------------------------+-----------------------------------+ | **Perakende ve E-ticaret** | Mağazalarda müşteri | | | davranışlarını izleme, stok | | | yönetimi ve müşteri yüz tanıma | | | gibi uygulamalar, perakende | | | sektöründe müşteri deneyimini | | | iyileştirmek için kullanılır. | +-----------------------------------+-----------------------------------+ | **Belge İşleme** | Posta sıralama, etiket okuma, | | | süpermarket ürün faturalama, | | | banka çek işleme, metin okuma, | | | teknik çizimlerin yorumlanması. | +-----------------------------------+-----------------------------------+ | **Tıbbi Görüntü Analizi** | Tümör tespiti, iç organların | | | boyut ve şekil ölçümü, kromozom | | | analizi, kan hücresi sayımı. | | | | | | Bilgisayarlı görü, tıbbi | | | görüntülerin analiz edilmesinde | | | yaygın olarak kullanılır. | | | Radyolojik görüntülerden tümör | | | tespiti, organların otomatik | | | segmentasyonu ve hastalıkların | | | erken teşhisi gibi uygulamalar, | | | sağlık sektöründe kritik bir rol | | | oynar. | +-----------------------------------+-----------------------------------+ | **Endüstriyel Otomasyon** | Montaj hatlarında parça | | | tanımlama, hata ve kusur | | | kontrolü. | +-----------------------------------+-----------------------------------+ | **Robotik** | Sahnedeki nesnelerin tanınması ve | | | yorumlanması, görsel geribildirim | | | aracılığıyla hareket kontrolü ve | | | yürütülmesi. | | | | | | Endüstriyel robotlar, | | | bilgisayarlı görüyü kullanarak | | | üretim hatlarında montaj, kalite | | | kontrol ve paketleme gibi | | | görevleri yerine getirir. | | | Robotlar, çevrelerini algılayarak | | | esnek ve verimli bir şekilde | | | çalışabilir. | +-----------------------------------+-----------------------------------+ | **Kartografi** | Fotoğraflardan harita yapma, hava | | | durumu haritalarının sentezi. | +-----------------------------------+-----------------------------------+ | **Adli Bilimler, Güvenlik | Parmak izi eşleştirme, yüz | | Sistemleri** | tanıma, yürüyüş analizi, diğer | | | biyometrik ölçümler (örneğin, | | | kulak, iris). | | | | | | Yüz tanıma, nesne tespiti ve | | | anormal davranış algılama gibi | | | özelliklerle donatılmış güvenlik | | | kameraları, kamu güvenliği ve | | | özel mülk koruma alanlarında | | | kullanılır. Bilgisayarlı görü, | | | güvenlik sistemlerinin daha | | | akıllı ve etkin olmasını sağlar. | +-----------------------------------+-----------------------------------+ | **İnsan-Makine Etkileşimi** | Yüz ifadesi analizi, göz hareketi | | | takibi, jest tanıma. | +-----------------------------------+-----------------------------------+ | **Gözetim** | Araç ve insan takibi, olay ve | | | etkinlik analizi. | +-----------------------------------+-----------------------------------+ | **Artırılmış Gerçeklik (AR) ve | Birden fazla görüşten sahne | | Sanal Gerçeklik (VR)** | rekonstrüksiyonu ve video, | | | fotoğraf gerçekçi modelleri. | | | | | | AR ve VR uygulamalarında, | | | kullanıcıların gerçek dünyadaki | | | hareketlerini izlemek ve dijital | | | içerik ile etkileşim sağlamak | | | için bilgisayarlı görü | | | teknolojileri kullanılır. Bu, | | | eğlence, eğitim ve endüstriyel | | | eğitim alanlarında devrim | | | yaratmaktadır. | +-----------------------------------+-----------------------------------+ | **Medya Tabanlı İçerik ve Video | Şekil, doku ve hareketin | | Geri Alımı** | indekslenmesi, temsili ve | | | kodlaması. | +-----------------------------------+-----------------------------------+ | **Hedef Tespiti ve Tanımlama** | Helikopterlerin ve uçakların | | | inişinde rehberlik, uzaktan | | | kumandalı araçların, füzelerin ve | | | uyduların görsel işaretlerle | | | rehberliği. | +-----------------------------------+-----------------------------------+ | **Çok Spektralli Görüntü | Hava tahmini, uydu | | Analizi** | görüntülerinden şehir, tarım ve | | | deniz ortamlarının | | | sınıflandırılması ve izlenmesi. | +-----------------------------------+-----------------------------------+ Ayrıca Bkz: [Termal Görüntülerde Görüntü İşleme](file:///E:%5C____Hello%20Again%5C_____Ders_IP%5CEkKaynaklar%5C___Kitap%20B%C3%B6l%C3%BCm%C3%BC_Sos.Bil.TR-GerekliSayfalar_Sosyal%20Bilimler%20Ara%C5%9Ft%C4%B1rmalar%C4%B1-T%C3%BCfekci_Akba%C5%9F.pdf) ![](media/image4.png) ![](media/image6.png) ![](media/image8.png) **Basic Algorithms for Digital Image Analysis, Dmitrij Csetverikov** **R.C.Gonzales, R.E.Woods, "Digital Image Processing", Addison-Wesley, 1993.** **A.K.Jain, "Fundamentals of Digital Image Processing", Prentice-Hall, 1989.\ ** 1. **Görüntü İşleme Aşamaları: Görüntü yakalama, ön işleme, segmentasyon, özellik çıkarımı, sınıflandırma, karar verme.** ![](media/image15.png) **Cv2.BGR2GRAY** 2. **Görüntü İşleme İçin Kullanılan Yazılım ve Araçlar** 1. **OpenCV Tanıtımı: Bilgisayarlı görü ve görüntü işleme için yaygın olarak kullanılan bir kütüphane olarak OpenCV\'nin tanıtımı.** 2. **ImageJ yazılımı** 3. **Python ve Diğer Araçlar: Python programlama dilinin ve diğer popüler araçların (MATLAB, scikit-image, PIL vb.) kısa tanıtımı.** 4. **Google Colab tanıtımı, giriş ve ilk deneme** **Uygulama: Colab üzerinde OpenCV yükleyerek örnek bir resmin ekranda görüntülenmesi** \# Gerekli paketleri yükle !pip install opencv-python-headless \# Gerekli kütüphaneleri içe aktar import cv2 import matplotlib.pyplot as plt from google.colab import files \# Google Colab\'e dosya yükle uploaded = files.upload() \# Yüklenen dosyanın ismini al image\_path = list(uploaded.keys())\[0\] \# Resmi OpenCV ile yükle (BGR formatında yüklenir) image = **cv2.imread**(image\_path) d:\\resim.jpeg \# Resmi RGB formatına çevir (OpenCV varsayılan olarak BGR formatında yükler) image\_rgb = cv2.cvtColor(image, cv2.COLOR\_BGR2RGB) \# Resmi matplotlib ile göster plt.imshow(image\_rgb) plt.axis(\'off\') \# Eksenleri gizle plt.show() \# Görüntüyü göster **plt.show() olmadan, bazı ortamlarda (örneğin, PyCharm gibi IDE\'lerde veya terminalde çalışan betiklerde) çizilen grafik ya da görüntü ekrana gelmez. Jupyter Notebook gibi interaktif ortamlarda plt.show() çağrılmadan da bazı grafikler görüntülenebilir, ancak bu genellikle o ortamın özelliğidir.** **Google Colab\'de files.upload() ile yüklenen dosyalar, geçici bir çalışma dizinine yüklenir. Bu geçici dizin, Colab oturumu açık olduğu sürece erişilebilir. Yüklenen dosyalar Colab\'in geçici dosya sistemi olan /content/ dizininde saklanır. Ancak Colab oturumu kapatıldığında bu dosyalar silinir.** 3. **Görüntülerin Temel Yapısı, Temel Kavramlar ve Temsili** 5. **Piksel nedir?** 6. **Görüntü çözünürlüğü nedir?** https://miro.medium.com/v2/resize:fit:630/0\*SnihHLsQwNxwWiqK.jpg ![8k vs 4k and Upscaling: Is 8k Worth the Upgrade? - RTINGS.com](media/image17.jpeg)https://miro.medium.com/v2/resize:fit:630/0\*jMJa1VSet5FIKGWy.jpg **Uygulama: Örnek resim üzerinde görüntü çözünürlüğünü görme** **\# prompt: resmin çözünürlük bilgisini göster** **\# Resmin çözünürlük bilgisini göster** **yukseklik, genislik, channels = image.shape** **print(\"Resmin çözünürlüğü:\", genislik, \"x\", yukseklik, \"Renk Kanalı Sayısı:\", channels)** ***Gri Skala ve Siyah Beyaz Görüntüler*** Gri skala görüntüler RGB modeli ile oluşturulmuş görüntülerdeki her pixeldeki renk değerlerinin ortalaması alınarak oluşturulur. ![Convert.csv file to Images. A simple solution to change pixel... \| by Sanchit Gupta \| Life and Tech \| Medium](media/image19.png) Convert.csv file to Images. A simple solution to change pixel... \| by Sanchit Gupta \| Life and Tech \| Medium ![https://miro.medium.com/max/586/1\*OMt\_49EF1JGjt0kMHhsmcA.png](media/image21.png) Yapay Çiçek 18li Tomur Gül Buketi Kırmızı Premium Demetler, Tüm Demet Çiçekler, Gül Demeti, Tüm Yapay Çiçekler Yapay Çiçek Deposu ![C:\\Users\\Güray TONGUÇ\\Desktop\\indir.png](media/image23.png) **Uygulama:** Google: Online grayscale converter **Uygulama: rgb-GS-Binary dönüşümü** \# prompt: görüntüyü bitmap\'e dönüştür ve göster \# Görüntüyü bitmap\'e dönüştür ret, thresholded\_image = cv2.threshold(gray\_image, 127, 255, cv2.THRESH\_BINARY) \# Bitmap görüntüsünü göster plt.imshow(thresholded\_image, cmap=\'gray\') plt.axis(\'off\') plt.show() 1. **Eşik değeri değiştirerek sonuçları gözlemleyiniz.** Siyah Beyaz görüntüler ise her bir pixelin içerisindeki gri skala değeri önceden belirlenen bir sınır değer ile karşılaştırılır. Gri skala değeri sınır değerden büyük olan pixeller yeni oluşturulan siyah beyaz görüntüde beyaz olarak (1), küçük olan pikseller siyah olarak (0) belirlenir ve içlerine 0 veya 1 değerleri yazılır. What Is A Bitmap Image Made Up Of **Uygulama:** Google: online rgb to bitmap converter (Çıkan sonucu not defterine yapıştırarak inceleyebilirsiniz) ![](media/image25.png) **Görüntü Boyutları ve Aspect Ratio: Görüntü boyutları ve en-boy oranının (aspect ratio) tanımı.** \# Aspect Ratio hesapla ve göster aspect\_ratio = genislik / yukseklik print(\"Aspect Ratio:\", aspect\_ratio) **\ ** 4. **Renk Bilgileri** ![אור -- סיכומונה](media/image1.gif) **Visible light: a narrow band of electromagnetic radiation →\ 380nm (blue) - 780nm (red)** **İnsan gözü tarafından algılanan renk, bir nesne tarafından yansıtılan ışığın doğasına bağlıdır. Tüm görünür dalga boylarında nispeten dengeli olan ışık beyaz olarak algılanır.** **Yeşil görünen nesneler 500-570 nm aralığında daha fazla ışık yansıtır (diğer ışık dalga boylarını emer).** **İnsan gözündeki altı ila yedi milyon koni üç kategoriye ayrılabilir: kırmızı ışığa duyarlı koniler (%65), yeşil ışığa duyarlı koniler (%33) ve mavi ışığa duyarlı koniler (%2). Son koniler en hassas olanlardır.** **Temel renk bilgileri, Uzaysal çözünürlük ve renk çözünürlüğü arasındaki farklar.** **Uygulama: Örnek resim üzerinde renk modelini ve çözünürlüğünü görme** **\# Resmin çözünürlük bilgisini göster** **yukseklik, genislik, channels = image.shape** **print(\"Resmin çözünürlüğü:\", genislik, \"x\", yukseklik, \"Renk Kanalı Sayısı:\", channels)** \# prompt: resmin renk modeli bilgisini ve renk çözünürlüğünü göster \# Resmin renk modelini belirle if channels == 1: renk\_modeli = \"Gri Tonlamalı\" elif channels == 3: renk\_modeli = \"RGB\" elif channels == 4: renk\_modeli = \"RGBA\" else: renk\_modeli = \"Bilinmeyen\" \# Renk çözünürlüğünü hesapla (varsayarak 8 bit/kanal) renk\_cozunurlugu = 2 \*\* (8 \* channels) print(\"Renk Modeli:\", renk\_modeli) print(\"Renk Çözünürlüğü:\", renk\_cozunurlugu, \"renk\") **Renk Modelleri: RGB, HSV, YCbCr gibi farklı renk modelleri ve bu modellerin özellikleri.** **Uygulama: örnek resim üzerinde renk modelleri dönüşümü** **Çeşitli Renk Modelleri** 1. **RGB (CIE), RnGnBn (TV - National Television Standard Comittee)** 2. **CMY/CMYK** 3. **CIELuv** 4. **CIELab** **Uygulama: Yüklediğiniz resmi kanallarına ayırıp gösteriniz** 5. **XYZ (CIE)** **Uygulama: Yüklediğiniz resmi kanallarına ayırıp gösteriniz** 6. **YUV, YIQ, YCbCr** 7. **UVW (UCS de la CIE), U\*V\*W\* (UCS modified by the CIE)** 8. **YDbDr** 9. **DSH, HSV, HLS, IHS** 10. **Munsel colour space (cylindrical representation)** 11. **SMPTE-C RGB** 12. **YES (Xerox)** 13. **Kodak Photo CD, YCC, YPbPr, \...** ***RGB Renk Modeli*** RGB renk modeli, İngilizcedeki \'Red\' \'Green\' \'Blue\' (\'Kırmızı\' \'Yeşil\' \'Mavi\') kelimelerinin baş harflerinden ismini alan bir renk sistemidir. En sık kullanılan renk modelidir. Bunun sebebi, 1953\'te ilk fotoğraf makinesi Polaroid'de ve ondan sonra da televizyonlarda standart kabul edilmiş olmasıdır. Işığı temel alarak, doğadaki tüm renklerin kodları bu üç temel renge referansla belirtilir. Her renk %100 oranında karıştırıldığında beyaz ve %0 oranında karıştırıldığındaysa siyah elde edilir. Pixel içerisindeki R-G-B değerleri en az 0, en çok 255 değerini alabilir. Bu üç rengin aldığı değerler oranınca karışımı ara renkleri meydana getirir. Teorik olarak 255x255x255 adet farklı renk ortaya koyulabilir. Tüm ana renkler 255 değerini alırsa beyaz, 0 alırlarsa siyah renk ortaya çıkar. RGB renk modeli ile temsil edilen renkler cihazdan cihaza veya aynı cihazda yıllar geçtikçe farklı görünebilir yani cihaz bağımlıdır. Bu modelin temeli insanın göz retinasında bu renklere rasgelen ışık dalga boyu sensörleridir. Bunların arasında kalan dalga boylarında da bu üç sensörün her biri değişik seviyelerde tepki verir ve bu tepki beyinde renk algısını yaratır. Örneğin gökkuşağının sarı olarak adlandırılan dalga boyunda bir ışık göze düştüğünde ağırlıklı olarak \'kırmızı\' ve \'yeşil\' sensörler uyarılır. Beyinde bu kombinasyon \'sarı\'ya dönüşür. Kırmızı ışık geldiğinde ise sadece \'kırmızı\' sensörler uyarılır. Hem kırmızı hem yeşil hem de mavi ışığın aynı anda gelmesi ile tüm dalga boylarının aynı anda gelmesi aynı etkiyi yaratır: beyaz ışık. Bu sebepten, şiddetleri sönük ve parlak olarak ayarlanabilen, bu üç renkte ışık kaynaklarının bulunduğu şartlarda tüm renkleri elde etmek mümkündür. **Uygulama:** Renklerin karışım oranına göre hangi ara rengin ortaya çıktığını Paint vb. yazılımlarla gözlemleyebilirsiniz. https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/AdditiveColor.svg/220px-AdditiveColor.svg.png ![Yapay Çiçek 18li Tomur Gül Buketi Kırmızı Premium Demetler, Tüm Demet Çiçekler, Gül Demeti, Tüm Yapay Çiçekler Yapay Çiçek Deposu](media/image22.jpeg) 2: A three-dimensional RGB matrix. Each layer of the matrix is a two-\... \| Download Scientific Diagram Yukarıdaki resim R -- G -- B kanallarına ayrıldığı zaman şu şekilde görünecektir; Her görüntüdeki açık renkli kısımlar o kanalın yüksek değer aldığı bölgelerdir. +-----------------------+-----------------------+-----------------------+ | ![C:\\Users\\GRAYTO\~ | ![C:\\Users\\GRAYTO\~ | ![C:\\Users\\GRAYTO\~ | | 1\\AppData\\Local\\Te | 1\\AppData\\Local\\Te | 1\\AppData\\Local\\Te | | mp\\Rar\$DR41.960\\Pi | mp\\Rar\$DR13.960\\Pi | mp\\Rar\$DR57.960\\Pi | | neTools.com\_files\\y | neTools.com\_files\\y | neTools.com\_files\\y | | apay-cicek-buyuk-kafa | apay-cicek-buyuk-kafa | apay-cicek-buyuk-kafa | | -sakayik-gul-demeti-b | -sakayik-gul-demeti-b | -sakayik-gul-demeti-b | | eyaz-mor-premium-deme | eyaz-mor-premium-deme | eyaz-mor-premium-deme | | tler-yapay-cicek-depo | tler-yapay-cicek-depo | tler-yapay-cicek-depo | | su-13702-14-B\[1\]\_r | su-13702-14-B\[1\]\_g | su-13702-14-B\[1\]\_b | | ed.jpg](media/image30 | reen.jpg](media/image | lue.jpg](media/image3 | |.jpeg) | 32.jpeg) | 4.jpeg) | | | | | | C:\\Users\\Güray | C:\\Users\\Güray | C:\\Users\\Güray | | TONGUÇ\\Desktop\\dcod | TONGUÇ\\Desktop\\dcod | TONGUÇ\\Desktop\\dcod | | e-image\_r.png | e-image\_g.png | e-image\_b | | | | (1).png | +=======================+=======================+=======================+ | R | G | B | +-----------------------+-----------------------+-----------------------+ ![Grayscale - Wikipedia](media/image36.png) File:RGB channels separation.png - Wikimedia Commons \# prompt: renkli resmi R, G, B kanallarına ayır ve görüntüle ![](media/image38.png) ![](media/image40.png) Veya ![](media/image42.png) import cv2 import matplotlib.pyplot as plt from google.colab import files !pip install opencv-python-headless uploaded = files.upload() \# Yüklenen dosyanın ismini alıyoruz image\_path = list(uploaded.keys())\[0\] \# Resmi OpenCV ile yükle image = cv2.imread(image\_path) **\# Resmi RGB formatına çevir (OpenCV varsayılan olarak BGR formatında yükler)** **image\_rgb = cv2.cvtColor(image, cv2.COLOR\_BGR2RGB)** \# R, G ve B kanallarını ayır r = image\_rgb\[:,:,0\] g = image\_rgb\[:,:,1\] b = image\_rgb\[:,:,2\] \# Her bir kanalı ayrı ayrı göster plt.figure(figsize=(15,5)) **plt.subplot(1,3,1)** **plt.imshow(r, cmap=\'gray\')** **plt.title(\'Red Channel\')** **plt.axis(\'off\')** plt.subplot(1,3,2) plt.imshow(g, cmap=\'gray\') plt.title(\'Green Channel\') plt.axis(\'off\') plt.subplot(1,3,3) plt.imshow(b, cmap=\'gray\') plt.title(\'Blue Channel\') plt.axis(\'off\') plt.show() **Ödev:** **Görüntü Yakalama ve Gösterimi: Öğrencilerin kendi cihazlarından bir görüntü yakalamaları ve bu görüntüyü Python/OpenCV kullanarak göstermeleri** ***CMY/CMYK Renk Modeli*** **CMYK, Cyan (Camgöbeği, siyan), magenta (Eflatun, macenta), yellow (Sarı), black (Siyah) temel alınan dört rengin kısaltmasıdır. Aslında temel renk sayısı üçtür. Siyah bu renklere zorunlu olarak ilave edilmiştir. Kuramda üç rengin karışımının siyahı oluşturması gerekirken, pratikte bu durum böyle değildir. Hem üç rengin mürekkepleri yeterli renk şiddetini sağlamadıklarından hem de üç renkli mürekkebin karışımı yerine siyah mürekkep kullanmanın maliyetinin daha düşük olması nedeniyle siyah renk sisteme ilave edilmiştir. RGB toplamsal, CMYK** Çıkarımsal renk modelidir yani renklerin karışımı siyahı oluşturur. CMYK ile RGB Arasında ki Fark Nedir ? -- Malatya Reklam -- Malatya Tabela -- Malatya Baskı -- Borsa Reklam Ajansı ![cmyk](media/image44.jpeg) Örnek bir resmin C, M, Y ve K kanalları (Digital Expert, 2007) http://dx.sheridan.com/images/press\_CMY.gif![http://dx.sheridan.com/images/press\_CMYK\_image.gif](media/image46.png) Şekil 2.15. K kanalı çıkarılmış eklenmiş örnek bir resim (Digital Expert, 2007) CMY\_components ---------------------------------------- ----------------------------------------- ![CMY\_components](media/image48.jpeg) CMYK\_components ![CMYK\_components](media/image50.jpeg) Bir resmin CMY ve CMYK kanalları ile gösterimi (Anonim) ***Uygulama: Renkli resmi C,M,Y,K kanallarına ayır ve görüntüle*** *\# prompt: renkli resmi C,M,Y,K kanallarına ayır ve görüntüle* *import matplotlib.pyplot as plt* *import numpy as np* *!pip install opencv-python-headless* *uploaded = files.upload()* *\# Yüklenen dosyanın ismini alıyoruz* *image\_path = list(uploaded.keys())\[0\]* *\# Resmi OpenCV ile yükle* *image = cv2.imread(image\_path)* *\# Resmi RGB formatına çevir (OpenCV varsayılan olarak BGR formatında yükler)* *image\_rgb = cv2.cvtColor(image, cv2.COLOR\_BGR2RGB)* *\# Resmi CMYK\'ya dönüştür* *\# Not: OpenCV doğrudan CMYK dönüşümü desteklemez, bu yüzden manuel olarak yapacağız.* *def rgb\_to\_cmyk(image):* *\# Resmi 0-1 aralığına ölçeklendir* *img\_scaled = image / 255.0* *\# K kanalını hesapla* *k = 1 - np.max(img\_scaled, axis=2)* *\# C, M ve Y kanallarını hesapla* *c = (1 - img\_scaled\[:,:,0\] - k) / (1 - k)* *m = (1 - img\_scaled\[:,:,1\] - k) / (1 - k)* *y = (1 - img\_scaled\[:,:,2\] - k) / (1 - k)* *\# CMYK görüntüsünü oluştur* *cmyk\_image = np.stack((c, m, y, k), axis=-1)* *return cmyk\_image* *cmyk\_image = rgb\_to\_cmyk(image\_rgb)* *\# C, M, Y ve K kanallarını ayır* *c = cmyk\_image\[:,:,0\]* *m = cmyk\_image\[:,:,1\]* *y = cmyk\_image\[:,:,2\]* *k = cmyk\_image\[:,:,3\]* *\# Her bir kanalı ayrı ayrı göster* *plt.figure(figsize=(20,5))* *plt.subplot(1,4,1)* *plt.imshow(c, cmap=\'gray\')* *plt.title(\'Cyan Channel\')* *plt.axis(\'off\')* *plt.subplot(1,4,2)* *plt.imshow(m, cmap=\'gray\')* *plt.title(\'Magenta Channel\')* *plt.axis(\'off\')* *plt.subplot(1,4,3)* *plt.imshow(y, cmap=\'gray\')* *plt.title(\'Yellow Channel\')* *plt.axis(\'off\')* *plt.subplot(1,4,4)* *plt.imshow(k, cmap=\'gray\')* *plt.title(\'Black Channel\')* *plt.axis(\'off\')* *plt.show()* ***CMY ile RGB\'nin bağlantısı*** **Boyaları karıştırarak elde edilen renkler bir filtreleme işlemi olarak da görülebilir. Örneğin, sarı boya, aslında tüm dalga boylarıyla yani beyaz ışıkla aydınlanan bir ortamda mavi ışığın filtrelenmesi, dolayısıyla kırmızı ve yeşil ışığın göze aynı anda ulaşmasıdır. Kırmızıyı da filtre edip sadece yeşil ışığın göze ulaşması istenirse sarı boya cyan ile karıştırılır, hem mavi hem kırmızı ışık filtre edilir, dolayısıyla yeşil renkte bir boya algılanır. RGB ve CMY arasındaki bağlantı şu şekilde özetlenebilir:** R (kırmızı ışık) + G (yeşil ışık) \\toY (sarı) R (kırmızı ışık) + B (mavi ışık) ![\\to](media/image51.png)M (macenta) G (yeşil ışık) + B (mavi ışık) \\toC (camgöbeği) ![1d](media/image52.jpeg) 1e -------------------------------------------- -------------------------------------------- RGB modelinden CMY modelinin elde edilmesi CMY modelinden RGB modelinin elde edilmesi ***HSV (HSB) Renk Modeli*** HSV (Hue, Saturation, Value) veya HSB (Hue, Saturation, Brightness) renk uzayı, renkleri sırasıyla renk özü, doygunluk ve parlaklık olarak tanımlar. HSV renk modelinin kullanılma amacı RGB uzayına göre insan görü düzeneğine daha yakın bir yapı oluşturmaktı. HSV, RGB renk uzayından doğrusal olmayan bir dönüşüm ile elde edilir. HSV, aygıt bağımlıdır. Yani bu uzayda tanımlı bir renk, rengi üreten aygıt cihazına göre değişim gösterebilir. **Hue (Renk Tonu)**: Bu, rengin kendisini belirler ve genellikle 0-360 derece arasında ölçülür. Örneğin, 0 derece kırmızı, 120 derece yeşil, 240 derece mavi olarak kabul edilir. Renk tonunu anlamak, belirli bir rengin ne olduğunu tanımlamak için önemlidir. **Saturation (Doygunluk)**: Rengin ne kadar canlı veya soluk olduğunu ifade eder. Doygunluk, 0 (tamamen soluk) ile 100 (tamamen canlı) arasında değişir. Doygunluğu yüksek olan bir renk, daha canlı ve belirgin görünür. **Value (Değer)**: Rengin ne kadar açık veya koyu olduğunu gösterir. Bu da 0 (tamamen siyah) ile 100 (tamamen beyaz) arasında ölçülür. Değer, renklerin parlaklık düzeyini belirler. ![HSV\_cone](media/image54.png)750px-HSV\_cylinder Konik ve silindirik biçimli HSV renk uzayı HSV uzayı, ilk tanımlandığı zamanlarda konik bir biçime sahipti. Ancak sonraki yıllarda, gerçek zamanlı geçerli koordinat denetimi için zamanın bilgisayarları yeterli olmadığından silindir biçimine dönüştürüldü. Konik biçimde, aydınlık düzeyi azaldıkça koninin genişliği azalır, dolayısıyla, insan görüsüne uygun olarak, düşük aydınlıkta algılanabilen farklı doygunluk düzeyleri de azalırlar. Diğer yandan, silindir biçimi ile sıfır aydınlık düzeyinde bile yüksek doygunluk düzeyleri tanımlanabilir ve böylece geçersiz renkler elde edilebilir. Dolayısıyla görüntü işleme uygulamalarında konik biçimi tercih edilirken, renk seçimi görevlerinde silindir biçimi kullanılma eğilimini gösterir. ![Barns\_grand\_tetons\_HSV\_separation](media/image56.jpeg) HSV kanallarına ayrılmış örnek bir resim **Uygulama** **\# prompt: renkli resmi hsv kanallarına ayır ve görüntüle** **import matplotlib.pyplot as plt** **!pip install opencv-python-headless** **uploaded = files.upload()** **\# Yüklenen dosyanın ismini alıyoruz** **image\_path = list(uploaded.keys())\[0\]** **\# Resmi OpenCV ile yükle** **image = cv2.imread(image\_path)** **\# Resmi RGB formatına çevir (OpenCV varsayılan olarak BGR formatında yükler)** **image\_rgb = cv2.cvtColor(image, cv2.COLOR\_BGR2RGB)** **\# Resmi HSV\'ye dönüştür** **hsv\_image = cv2.cvtColor(image\_rgb, cv2.COLOR\_RGB2HSV)** **\# H, S ve V kanallarını ayır** **h = hsv\_image\[:,:,0\]** **s = hsv\_image\[:,:,1\]** **v = hsv\_image\[:,:,2\]** **\# Her bir kanalı ayrı ayrı göster** **plt.figure(figsize=(15,5))** **plt.subplot(1,3,1)** **plt.imshow(h, cmap=\'hsv\')** **plt.title(\'Hue Channel\')** **plt.axis(\'off\')** **plt.subplot(1,3,2)** **plt.imshow(s, cmap=\'gray\')** **plt.title(\'Saturation Channel\')** **plt.axis(\'off\')** **plt.subplot(1,3,3)** **plt.imshow(v, cmap=\'gray\')** **plt.title(\'Value Channel\')** **plt.axis(\'off\')** **plt.show()** **\ ** Görüntü İyileştirme İşlemleri ============================= **Problems with Processing Colour Images** **1. Renk Bozulması (Color Distortion)** **Kameralardan veya görüntülerin sıkıştırılmasından kaynaklanan renk bozulmaları, renklerin gerçek tonlarını kaybetmesine neden olabilir. Düşük kaliteli sensörler ya da fazla sıkıştırma, renklerin doğru yakalanmamasına yol açar. Bu tür sorunları önlemek için, daha kaliteli kamera sensörleri ve doğru renk profilleri kullanılması önerilir. Ayrıca, görüntü sıkıştırma algoritmaları minimum düzeyde uygulanmalı veya kayıpsız formatlar tercih edilmelidir. Renk kalibrasyonu yaparak kameralar arasındaki farklar da giderilebilir.** **2. Renk Uzayı Sorunları** **Yanlış renk uzaylarının kullanılması veya dönüşümlerde yapılan hatalar, renklerin beklenenden farklı görünmesine yol açabilir. Örneğin, RGB ve HSV gibi farklı renk uzayları arasında geçiş yaparken veri kaybı olabilir. Bu sorunları çözmek için, işleme sırasında uygun renk uzayını seçmek önemlidir. Renk uzayları arasında doğru dönüşümleri gerçekleştiren kütüphaneler (örneğin, OpenCV) kullanılmalı ve analiz amacına uygun renk uzayı seçilmelidir. Özellikle çok hassas renk ayrımı gerektiren işlemlerde LAB renk uzayı kullanılabilir.** **3. Refleksiyon ve Parlama (Reflection and Glare)** **Pürüzsüz yüzeylerden gelen ışık yansımaları ve parlamalar, renkli görüntülerde istenmeyen efektlere yol açabilir. Özellikle parlak objeler üzerinde bu etkiler renk analizini zorlaştırır. Bu durumun önüne geçmek için polarize filtreler kullanılarak kameranın ışık yansımalarını engellemesi sağlanabilir. Ayrıca, görüntü işleme aşamasında parlamaların tespiti ve giderilmesi için özel algoritmalar (örneğin, parlama maskeleri) kullanılabilir.** **4. Gölgeleme ve Homojen Olmayan Aydınlatma** **Düzensiz aydınlatma, gölgelerin ve ışık yoğunluğunun farklı bölgelerde değişiklik göstermesi nedeniyle renklerin homojen görünmemesine yol açar. Bu sorun, histogram dengeleme veya aydınlatma düzenleme algoritmaları ile giderilebilir. Özellikle Adaptive Histogram Equalization (CLAHE) gibi yöntemler, bu tür lokal aydınlatma farklılıklarını dengelemek için etkilidir. Ayrıca, çekim ortamında daha dengeli bir aydınlatma sağlamak, görüntü işleme sırasında yapılacak düzenlemelere ihtiyaç duyulmasını azaltabilir.** **5. Doku ve Desenlerin Etkisi** **Karmaşık yüzey dokuları ve desenler, nesnelerin gerçek renklerinin algılanmasını zorlaştırabilir. Tekrarlayan desenler veya çok renkli dokular, renk analizinde sorunlara yol açabilir. Bu sorunu çözmek için, desen ve doku bilgilerini ayırmak amacıyla frekans alanında işleme teknikleri kullanılabilir. Örneğin, görüntüde renk ve doku bilgilerini ayıran filtreler (örneğin, Gabor filtreleri) uygulanarak doku etkileri azaltılabilir. Ayrıca, nesne segmentasyonu yapılarak analiz sadece ilgili nesne üzerinde gerçekleştirilebilir.** **6. Hareket Bulanıklığı (Motion Blur)** **Hızlı hareket eden nesneler, bulanık renklere yol açarak görüntü kalitesini düşürebilir. Bu durum, özellikle düşük ışık koşullarında daha sık karşılaşılan bir sorundur. Hareket bulanıklığını önlemek için, daha hızlı deklanşör hızları kullanılabilir ya da görüntü sabitleme algoritmaları devreye sokulabilir. Hareket bulanıklığına sahip görüntülerde ise, deblurring (bulanıklık giderme) algoritmaları uygulanarak nesnenin net bir şekilde görünmesi sağlanabilir. Optik görüntü sabitleme (OIS) veya dijital görüntü sabitleme (EIS) teknolojileri de hareket kaynaklı bozulmaları minimize eder.** **Görüntülerdeki keskin kenarlar veya hızlı renk geçişleri, renk bozulmalarına neden olabilir. Bu bozulmalar, özellikle kenar algılama veya segmentasyon işlemlerinde problem yaratır. Anti-aliasing gibi kenar yumuşatma teknikleri, bu sorunları hafifletebilir. Ayrıca, daha yumuşak geçişler sağlamak için Gaussian blur veya diğer yumuşatma filtreleri kullanılabilir. Segmentasyon işlemleri sırasında daha hassas kenar tespiti için de derin öğrenme temelli kenar algılama algoritmaları tercih edilebilir.** **7. Düşük Çözünürlük (Low Resolution)** **Düşük çözünürlüklü görüntülerde renk ayrıntılarının kaybolması, özellikle küçük nesnelerde renk tespitini zorlaştırabilir. Bu sorunu çözmek için, görüntü çözünürlüğü artırılabilir veya süper çözünürlük algoritmaları kullanılarak görüntülerin kalitesi iyileştirilebilir. Özellikle derin öğrenme temelli süper çözünürlük yöntemleri, düşük çözünürlükteki görüntülerin ayrıntılarını geri kazandırmak için etkilidir. Ayrıca, küçük nesneler üzerinde çalışırken optik yakınlaştırma veya görüntü büyütme teknikleri kullanılabilir.** **8. Dış Ortam Koşulları** **Sis, yağmur veya kar gibi dış ortam koşulları, renklerin görünürlüğünü ve netliğini ciddi şekilde etkileyebilir. Sisli veya bulutlu hava koşullarında renkler daha soluk ve kontrastsız görünebilir. Bu koşullarda, kontrast artırma ve sis giderme algoritmaları (örneğin, Dehaze algoritması) kullanılabilir. Ayrıca, hava koşullarına bağlı renk bozulmalarını telafi eden görüntü iyileştirme yöntemleri, görüntülerin daha net ve renklerin daha doğru görünmesini sağlayabilir.** **Lighting conditions** colour\_eg\_flash Flaşla aydınlatılarak çekilen görüntü ![colour\_eg\_tungsten\_lamp](media/image59.png) Tungsten lambayla aydınlatılmış halde çekilen görüntü Eşikleme (Thresholding) ----------------------- Thresholding (eşikleme), bir görüntüdeki pikselleri belirli bir parlaklık değerine göre sınıflandırma işlemidir. Bu işlem, bir görüntüyü iki veya daha fazla bölgeye ayırarak her bölgedeki piksellerin farklı özelliklerine göre işlenmesini sağlar. Genellikle, görüntüdeki nesneleri veya bölgeleri ayırt etmek için kullanılır. Eşikleme işleminin girdisi genellikle gri tonlamalı veya renkli bir görüntüdür. En basit uygulamada, çıktı segmentasyonu temsil eden ikili bir görüntüdür. Siyah pikseller arka plana, beyaz pikseller ön plana karşılık gelir (veya tam tersi ). Basit uygulamalarda, segmentasyon yoğunluk eşiği olarak bilinen tek bir parametre tarafından belirlenir. Tek bir geçişte, görüntüdeki her piksel bu eşikle karşılaştırılır. Pikselin yoğunluğu eşikten yüksekse, piksel çıktıda örneğin beyaz olarak ayarlanır. Eşikten düşükse, siyah olarak ayarlanır. Basit Eşikleme (Binary Thresholding, Global Thresholding): ---------------------------------------------------------- - Belirli bir eşik değerinin üzerinde olan pikseller bir sınıfa, altında olanlar ise diğer bir sınıfa atanır. Örneğin, eşik değeri 128 olarak belirlenirse, 128 ve üzerindeki pikseller beyaz (255) ve altında olan pikseller siyah (0) olarak sınıflandırılır (ekranda gösterilir). \# prompt: basit eşikleme yap import matplotlib.pyplot as plt \# Eşikleme için bir eşik değeri belirle threshold\_value = 128 \# Eşikleme işlemini uygula \_, thresholded\_image = cv2.threshold( cv2.cvtColor(image\_rgb, cv2.COLOR\_RGB2GRAY), threshold\_value, 255, cv2.THRESH\_BINARY ) \# Eşiklenmiş resmi göster plt.imshow(thresholded\_image, cmap=\'gray\') plt.axis(\'off\') plt.show() C:\\Users\\Guray\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.MSO\\B8F22554.tmp Otsu\'nun Yöntemi (Otsu Method): -------------------------------- Otsu\'nun yöntemi, histogramdaki piksel değerlerini otomatik olarak iki sınıfa ayıran bir eşik değeri belirler. Histogramın var olan yoğunluk dağılımını analiz ederek optimum eşik değerini bulur. \# prompt: otsu eşikleme yap ve sonucu göster import matplotlib.pyplot as plt \# Gri tonlamaya dönüştür gray = cv2.cvtColor(image, cv2.COLOR\_BGR2GRAY) \# Otsu eşikleme uygula ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH\_BINARY + cv2.THRESH\_OTSU) \# Sonucu göster plt.imshow(thresh, cmap=\'gray\') plt.axis(\'off\') plt.show() ![C:\\Users\\Guray\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.MSO\\D3BE3A82.tmp](media/image61.png) Aşağıdaki görüntü ile uygulama yapınız (stone crack, mermer çatlağı); https://www.researchgate.net/profile/Shahrokh-Heidari/publication/332664008/figure/fig2/AS:754753160093697\@1556958584238/mage-Histogram-diagram-for-a-digital-gray-scale-image-named-Lena.jpg Google: "image histogram online" Uyarlamalı Eşikleme (Adaptive Thresholding): -------------------------------------------- Geleneksel eşikleme operatörü tüm pikseller için genel bir eşik kullanır. Uyarlamalı eşikleme, görüntü üzerindeki eşiği dinamik olarak değiştirir. Eşiklemenin bu sofistike versiyonu, görüntüdeki değişen ışıklandırma koşullarına uyum sağlayabilir. Uyarlamalı eşikleme farklı bölgelerde farklı eşik değerleri kullanarak yerel olarak eşikleme yapar. Bu, özellikle düzensiz aydınlatma koşullarında etkili olabilir. Her pikselin komşularına bağlı olarak eşik değeri hesaplanır. Mean ve Gaussian alt yöntemleri bulunur. ![](media/image65.png) \# prompt: adaptif eşikleme yap ve sonucu göster import matplotlib.pyplot as plt \# Adaptif eşikleme uygula adaptive\_thresh = cv2.adaptiveThreshold( cv2.cvtColor(image, cv2.COLOR\_BGR2GRAY), 255, cv2.ADAPTIVE\_THRESH\_**MEAN\_C**, cv2.THRESH\_BINARY, 11, 2 ) \# Sonucu göster plt.imshow(adaptive\_thresh, cmap=\'gray\') plt.axis(\'off\') plt.show() OTSU:\ Adaptive Gaussian: Adaptive Mean: \# prompt: yüklediğim resmi gri skalaya çevir ve gri skalalı olanı global ve adaptif yöntemi ile siyah beyaza çevir. RGB, gri, global ve adaptif i yan yana göster ![](media/image70.png) C:\\Users\\Guray\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.MSO\\A024BDE0.tmp ![C:\\Users\\Guray\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.MSO\\95973EEE.tmp](media/image72.png) Mean Adaptif ve Gaussian Adaptif eşikleme uygulanmış görüntüler OpenCV: Image Thresholding [**[https://docs.opencv.org/4.x/d7/d4d/tutorial\_py\_thresholding.html]**](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) ![OpenCV: Adaptive and Otsu Threshold in Image Processing with Python \| by Amit Chauhan \| Medium](media/image74.png) [**[https://amitprius.medium.com/opencv-adaptive-and-otsu-threshold-in-image-processing-with-python-648b64129876]**](https://amitprius.medium.com/opencv-adaptive-and-otsu-threshold-in-image-processing-with-python-648b64129876) wdg3 ![wdg3thr1](media/image76.png) wdg3thr2 Normalizasyon (Normalization) Nedir? ------------------------------------ Görüntü normalizasyonu, bir görüntüdeki piksel değerlerinin belirli bir aralığa dönüştürülmesi işlemidir. Bu işlem, görüntü işleme ve analizinde çeşitli avantajlar sağlar, özellikle de farklı ışık koşullarında çekilmiş veya farklı kontrastlara sahip görüntülerin karşılaştırılması gerektiğinde. **Normalizasyon**, piksel değerlerini belirli bir aralığa (genellikle 0-1 veya 0-255) getirmek için kullanılır. \# prompt: önce grayscale sonra normalizasyon yap ve sonucu göster import matplotlib.pyplot as plt \# Resmi gri tonlamaya dönüştür gray\_image = cv2.cvtColor(image\_rgb, cv2.COLOR\_RGB2GRAY) \# Resmi normalize et normalized\_img = cv2.normalize(img, None, 0, 255, cv2.NORM\_MINMAX) \# Sonucu göster plt.imshow(normalized\_image, cmap=\'gray\') plt.axis(\'off\') plt.show() \#gri görüntü üzerinde normalizasyon işlemi yap ve görüntüle. \#Gri tonlamalı ve normalize edilmiş görüntülerin histogramlarını oluştur, yan yana görüntüle. ![C:\\Users\\Guray\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.MSO\\E75F19D9.tmp](media/image79.png) barrett\_010\_c\_30 ![collier\_002\_c\_30](media/image81.png) nemchonok\_004\_c\_30 ----------------------------------------------- ------------------------------------------- ------------------------------------------------- ![barrett\_010\_sFOOT\_30](media/image83.png) collier\_002\_sFOOT\_30 ![nemchonok\_004\_sFOOT\_30](media/image85.png) Histogramlar: Görüntü Histogramlarının Tanımı Ve Kullanım Alanları ------------------------------------------------------------------ (Yoğunluk veya parlaklık) histogramı, belirli bir gri seviyesinin (yoğunluğun) bir görüntüde kaç kez göründüğünü gösterir. --- --- --- --- --- 0 1 1 2 4 2 1 0 0 2 5 2 0 0 4 1 1 2 4 1 --- --- --- --- --- [\[CHART\]]{.chart} Görüntü histogramı, bir görüntüdeki piksel değerlerinin dağılımını grafiksel olarak gösteren bir araçtır. Bu grafik, yatay eksende piksel değerlerini (gri görüntülerde 0-255 arası gri tonları, renkli görüntülerde renk bileşenlerini) ve dikey eksende ise bu değerlere sahip piksel sayısını gösterir. Siyah-beyaz (gri tonlamalı) bir görüntüde, histogram yalnızca pikselin parlaklık seviyelerini temsil ederken, renkli bir görüntüde her bir renk kanalı (kırmızı, yeşil, mavi - RGB) için ayrı bir histogram oluşturulabilir. \# prompt: histogramını oluştur import matplotlib.pyplot as plt \# Gri tonlamaya dönüştür gray\_image = cv2.cvtColor(image, cv2.COLOR\_BGR2GRAY) \# Histogramı hesapla hist = cv2.calcHist(\[gray\_image\], \[0\], None, \[256\], \[0, 256\]) \# Histogramı çizdir plt.figure() plt.title(\"Gri Tonlama Histogramı\") plt.xlabel(\"Piksel Değeri\") plt.ylabel(\"Piksel Sayısı\") plt.plot(hist) plt.xlim(\[0, 256\]) plt.show() \# prompt: renkli histogramını oluştur import matplotlib.pyplot as plt \# Renkli histogramı hesapla color = (\'b\', \'g\', \'r\') for i, col in enumerate(color): histr = cv2.calcHist(\[image\], \[i\], None, \[256\], \[0, 256\]) plt.plot(histr, color=col) plt.xlim(\[0, 256\]) plt.title(\"Renkli Histogram\") plt.xlabel(\"Piksel Değeri\") plt.ylabel(\"Piksel Sayısı\") plt.show() **Aşağıdaki görüntü ve histogramı incelendiğinde görüntüdeki kontrast (zıtlık) zayıflığı görülmektedir.**wom1![wom1hst1](media/image90.png) **Kontrast Stretching (Esnetme)** https://www.researchgate.net/profile/Ismail-T-Ahmed/publication/335864559/figure/fig1/AS:895441243738112\@1590501237283/a-Good-Contrast-Image-b-Poor-Contrast-Image.jpg Kontrast stretching (kontrast germe), görüntünün kontrastını artırmak için kullanılan bir görüntü iyileştirme tekniğidir. Bir görüntüdeki piksel değerleri sınırlı bir aralıkta olabilir (örneğin, çok karanlık ya da çok parlak bir görüntüde piksel değerleri dar bir aralıkta toplanabilir). Kontrast stretching, bu piksel değerlerini yeniden ölçeklendirerek (genişleterek), görüntüdeki parlak alanların daha parlak, koyu alanların ise daha koyu hale getirilmesini sağlar. Böylece görüntünün daha net ve ayrıntılı hale gelmesi amaçlanır. Kontrast stretching işlemi, minimum ve maksimum piksel değerlerini genişleterek görüntüdeki tüm parlaklık aralığını (örneğin, 0 ile 255 arasını) kullanacak şekilde düzenler. **Düşük kontrastın nedenleri:** - **zayıf aydınlatma** - **sensörün düşük dinamikleri** - **lens diyaframının yanlış ayarlanması** \# prompt: bilgisayardan resim yükle, kontrast stretch işlemi yap, eski ve yeni oluşan histogramı ve resmi yan yana göster import cv2 import matplotlib.pyplot as plt from google.colab import files import numpy as np uploaded = files.upload() image\_name = list(uploaded.keys())\[0\] \# Read the image img = cv2.imread(image\_name, cv2.IMREAD\_GRAYSCALE) \# Calculate the original histogram hist\_original = cv2.calcHist(\[img\], \[0\], None, \[256\], \[0, 256\]) \# Contrast stretching min\_val = np.min(img) max\_val = np.max(img) stretched\_img = (img - min\_val) \* (255 / (max\_val - min\_val)) stretched\_img = stretched\_img.astype(np.uint8) \# Ensure the image is of type uint8 \# Calculate the histogram of the stretched image hist\_stretched = cv2.calcHist(\[stretched\_img\], \[0\], None, \[256\], \[0, 256\]) \# Display the original and stretched images and their histograms plt.figure(figsize=(12, 6)) plt.subplot(2, 2, 1) plt.imshow(img, cmap=\'gray\') plt.title(\'Original Image\') plt.subplot(2, 2, 2) plt.plot(hist\_original) plt.title(\'Original Histogram\') plt.subplot(2, 2, 3) plt.imshow(stretched\_img, cmap=\'gray\') plt.title(\'Stretched Image\') plt.subplot(2, 2, 4) plt.plot(hist\_stretched) plt.title(\'Stretched Histogram\') plt.tight\_layout() plt.show() **max\_val - min\_val 140 ve 20 alarak denemelerimizi yapalım** ![cla3](media/image97.png) cla3hst1 ![cla3str1](media/image99.png) cla3hst3 **Histogram Eşitleme (Histogram Equalization)** **Histogram eşitleme, bir görüntünün kontrastını iyileştirmek için kullanılan bir görüntü işleme tekniğidir. Bu yöntem, görüntüdeki parlaklık değerlerinin dağılımını yeniden düzenleyerek daha geniş bir parlaklık aralığı kullanmayı amaçlar. Özellikle düşük kontrastlı görüntülerde, parlak veya karanlık alanlar arasında daha dengeli bir dağılım sağlanarak görüntüdeki ayrıntılar daha görünür hale gelir.** **Bu işlem, görüntünün histogramını yeniden şekillendirerek daha düz ve eşit bir dağılım oluşturur. Böylece, belirli parlaklık seviyelerinde yığılmış pikseller farklı seviyelere yayılır ve görüntüdeki kontrast artırılır.** \# prompt: histogram equalisation işlemi yap ve yeni oluşan histogramı ve resmi göster import matplotlib.pyplot as plt \# Gri tonlamaya dönüştür gray\_image = cv2.cvtColor(image, cv2.COLOR\_BGR2GRAY) \# Histogram eşitleme uygula equalized\_image = **cv2.equalizeHist(gray\_image)** \# Eşitlemiş resmi göster plt.figure(figsize=(10, 5)) plt.subplot(1, 2, 1) plt.imshow(equalized\_image, cmap=\'gray\') plt.title(\'Eşitlemiş Resim\') plt.axis(\'off\') \# Histogramı göster plt.subplot(1, 2, 2) plt.hist(equalized\_image.ravel(), 256, \[0, 256\]) plt.title(\'Histogram\') plt.show() ![Effect of Histogram Equalization. The image on the top left has a\... \| Download Scientific Diagram](media/image102.png) getstart![getstara](media/image104.png) getstarc![getstarb](media/image106.png) hammas1 ![histo1](media/image108.jpeg)hammas2 ![histo2](media/image110.jpeg) moo2 ![moo2hst2](media/image112.png)moo2heq1 ![moo2hst1](media/image114.png) ![bld1heq1](media/image115.png) bld1crp1 ![chestct\_raw](media/image117.jpeg) chestct\_clahe1 **Bilgisayarlı Tomografi (CT) Akciğer Görüntüleri üzerinde HE** **Kontrast Stretching ile Histogram Eşitleme Arasındaki Fark** - **Kontrast Stretching**: Piksel değerlerini belirli bir aralığa genişleterek yapılır ve lineer bir dönüşümdür. Piksel dağılımını yeniden şekillendirmez, sadece mevcut değerleri genişletir. - **Histogram Eşitleme**: Görüntüdeki parlaklık dağılımını dengelemek için kullanılır ve daha karmaşık bir dönüşüm uygular. Histogram eşitleme, görüntüdeki tüm parlaklık seviyelerini daha eşit dağıtmak için kullanılır. Histogram eşitleme her zaman istenen sonuçları üretmeyebilir, özellikle de verilen histogram çok darsa. Yanlış kenarlar ve bölgeler üretebilir. Ayrıca görüntü \"taneliliğini\" ve \"yamalığını\" artırabilir. +-----------------------------------+-----------------------------------+ | ![fip145](media/image121.png) | fip146 | | | | | | ~~Kontrast Stretching~~ | +===================================+===================================+ | | | +-----------------------------------+-----------------------------------+ | | ![fip147](media/image123.png) | | | | | | Histogram Equalization | +-----------------------------------+-----------------------------------+ **Histogram Projection (Histogram Projeksiyonu)** Histogram projeksiyonu, bir görüntüdeki piksellerin belirli bir eksen (yatay veya dikey) boyunca yoğunluğunu gösteren bir görüntü işleme tekniğidir. Temelde, bir görüntüdeki parlaklık değerlerinin yatay veya dikey eksene yansıtılmasıyla oluşan histogramdır. Bu teknik, görüntüde belirli yapıları, nesneleri veya desenleri tespit etmek için kullanılır. Projeksiyon işlemi, görüntünün bir eksen boyunca sıkıştırılarak her satır veya sütundaki piksellerin toplamının hesaplanması anlamına gelir. Yani, her satırdaki (yatay projeksiyon) veya sütundaki (dikey projeksiyon) piksel yoğunlukları toplanarak bir grafik oluşturulur. **Karmaşık görüntülerde zayıf performans ve dönmeye karşı hassasiyet gibi dezavantajları bulunmaktadır.** **IR image** **HE** **HP** -------------------------------------------------------------------------- ----------------------------------------------------------------------------- ------------------------------------------------------------------------ picture of a linear display of infared imagery ![picture of histogram equalization of infared imagery](media/image125.png) picture of histogram projection of infared energy ![graph of a raw signal histogram of infared energy](media/image127.png) graph of histogram equalization of infared energy ![graph of histogram projection display histogram](media/image129.png) ![](media/image131.png)The vertical and horizontal projection histograms for the letter "a". \| Download Scientific Diagram ![Segmentation of the numbers based the vertical projection histogram \| Download Scientific Diagram](media/image133.png) import cv2 import matplotlib.pyplot as plt import numpy as np \# Görüntüyü gri tonlamaya çevir gray\_image = cv2.cvtColor(image, cv2.COLOR\_BGR2GRAY) \# Yatay histogram projeksiyonu: Her satırdaki piksel yoğunluklarını topla horizontal\_projection = np.sum(gray\_image, axis=1) \# Dikey histogram projeksiyonu: Her sütundaki piksel yoğunluklarını topla vertical\_projection = np.sum(gray\_image, axis=0) \# Yatay projeksiyon grafiğini çiz plt.figure(figsize=(10, 5)) plt.subplot(1, 2, 1) plt.plot(horizontal\_projection) plt.title(\'Yatay Histogram Projeksiyonu\') plt.xlabel(\'Satır\') plt.ylabel(\'Yoğunluk\') \# Dikey projeksiyon grafiğini çiz plt.subplot(1, 2, 2) plt.plot(vertical\_projection) plt.title(\'Dikey Histogram Projeksiyonu\') plt.xlabel(\'Sütun\') plt.ylabel(\'Yoğunluk\') plt.tight\_layout() plt.show() C:\\Users\\Guray\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.MSO\\4FCA6052.tmp **Kümülatif Histogram** Kümülatif histogram (Cumulative Histogram), bir görüntünün parlaklık değerlerinin kümülatif sıklığını gösteren bir grafik türüdür. Bu, her parlaklık seviyesindeki piksel sayısının, önceki seviyelerle birlikte birikerek hesaplandığı bir histogram türüdür. Her bir parlaklık seviyesi için, o seviyeye kadar olan piksel değerlerinin toplam sayısını gösterir. \# prompt: kümülatif histogram oluştur import matplotlib.pyplot as plt \# Gri tonlamaya dönüştür gray\_image = cv2.cvtColor(image, cv2.COLOR\_BGR2GRAY) \# Kümülatif histogramı hesapla hist = cv2.calcHist(\[gray\_image\], \[0\], None, \[256\], \[0, 256\]) cumulative\_hist = hist.cumsum() \# Kümülatif histogramı göster plt.plot(cumulative\_hist) plt.title(\'Kümülatif Histogram\') plt.xlabel(\'Piksel Değeri\') plt.ylabel(\'Piksel Sayısı\') plt.show() **\