Arama butonu
Bu konudaki kullanıcılar: 1 misafir
12
Cevap
3334
Tıklama
0
Öne Çıkarma
C# Görüntü işleme algoritmaları
Ç
11 yıl
Çavuş
Konu Sahibi

Selam.

Okuldan bir adet proje yapmamız istendi. Kısaca özetleyeyim: Bir adet resim alınacak ve pictureBox'a yüklenecek. Daha sonra bu resim, pixel pixel taranarak renk kodları çıkarılacak. Buraya kadar sıkıntı yok. Fakat buradan sonra resimde en fazla miktarda mevcut olan rengi tespit etmemiz istendi. Örneğin resmimizde en çok sarı renk hakim diyelim. Resmin içinde yer alan sarı rengin tüm tonları bir listeye atılacak. İşte burada iki adet algoritma kullanmamız istendi: SCALAR QUANTİZATİON ve MEDİAN CUT.

Bu iki algoritma hakkında pek Türkçe döküman bulamadım. Bu noktada bana yardım edebilir misiniz? Şimdiden teşekkürlerimi sunuyorum.

Not: Programlama dili olarak c# kullanılacak.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



K
11 yıl
Yarbay

Zor bir odevmis
Bahsettiginiz algoritmalari bilmiyorum.
Lakin
Ff0000 de kirmizi dir ff1111 de kirmizidir ffffff beyaz olsa da aslinda icinde kirmizi kadar kirmizi vardir.

bayaa zor. Bence bahsi gecen algoritmalara abanmak lazim.

Ama ben tembel adamim. Resmin kalitesini once 256 renge dusurur onun uzerinden islem yaparim.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
Ç
11 yıl
Çavuş
Konu Sahibi

Cevap için teşekkür ediyorum. Son cümle benim de aklıma yattı şimdi. Biraz olsun işi kolaylaştıracak gibi görünüyor. Fakat dediğim gibi verdikleri algoritmalar hakkında Türkçe kaynak bulmak neredeyse imkansız. Muhtemelen bu algoritmaların birer Türkçe karşılığı vardır diye düşünüyorum ama içinden çıkamadım bir türlü..


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Kaygerya
O
11 yıl
Er

Arkadaşlar, Median Cut Algoritması ile ilgili Word Dökümanına

http://www.dosya.tc/server29/smpnjr/MEDIANCUTALGORITMASI.rar.html

linkinden erişip indirebilirsiniz. Kaynak Türkçedir.


Bu mesaja 1 cevap geldi.
K
11 yıl
Yüzbaşı

Resmi byte array'a çevirip rahatlıkla yapabilirsin bu işi.



Ç
11 yıl
Çavuş
Konu Sahibi

Projeyi bitireli 2 ay oluyor neredeyse ama gene de teşekkürler sayın oguzhangedik, güzel ve anlaşılır bir paylaşım olmuş. Emeğinize sağlık

İlginiz için size de şükranlarımı sunuyorum sayın K. Başta biz de sizin gibi düşünmüştük fakat olaylar sürekli gelişti, önünü alamadık


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @K , @oguzhangedik
K
11 yıl
Yüzbaşı

Kusura bakmayın konuyu üstlerde görünce yeni sandım



B
11 yıl
Çavuş

Nasıl yaptığınızı yazabilir misin ? Merak ettim biz de öğrenelim :)


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @çemçük
Ç
11 yıl
Çavuş
Konu Sahibi

Kısaca özetleyeyim o zaman:

Resmi öncelikle piksel piksel taratıp renk kodlarını elde ettik. Daha sonra bu resmi dört eş parçaya böldük ve bu eş parçalardaki renk kodlarını tek tek kontrol ettik. Sonra parçalardaki farklı renk sayılarını tespit ettik.

Biraz absürd olacak ama örneğin resim 4 adet pikselden oluşuyor diyelim. 1.piksel kırmızı, 2.piksel mavi, 3. sarı ve 4.sü de yine kırmızı. (burada renk isimlerini verdim ama normalde #ff55dd gibi renk kodları ile işlem yapıyoruz)

Burada ilk pikseli diğerleri ile kontrol ediyoruz. Başta ilk değeri 0 olan bir int değişken tanımladığımızı farzedelim. Eğer 1.piksel, kontrol edilen pikselden farklı ise, değişkeni 1 artırıyoruz, aynı renk ise değiştirmiyoruz. Böylelikle parçadaki farklı renk sayısını buluyoruz. Mesela verdiğim bu örnekte 3 farklı renk çıkıyor. (k,m,s)

4 eş parçanın tümünü bu işleme tabi tutuyoruz. En çok sayıda farklı renk hangi parçada ise, artık o parçayı ele alıyoruz. Diğer 3 parça ile işimiz bitiyor. Sonra elde ettiğimiz bu parçayı da 4 eş parçaya bölüyor ve aynı işlemleri bu parçalara da uyguluyoruz. Rekürsif bir yapı var anlayacağın.

"Peki bu işlem nereye kadar sürecek?" diye soruyorsundur muhakkak. Başta kullanıcıdan aldığımız bir seviye var. Yani ilk önce kullanıcıya kolay-orta-zor şeklinde 3 adet zorluk seviyesi sunuyoruz. Her seviye, belirli miktarda renk getiriyor ekrana. Mesela orta seviyeyi seçtiğimde 11 adet renk kutucuğu geliyor ekrana. (Ödevde bizden istenen bu şekilde idi). İstenen kutucuk sayısını, zorluk seviyesi belirlendiği anda int bir değişkene atıyoruz.

Resimdeki farklı sayı miktarı, bizden istenen kutucuk sayısına(biraz önce dediğim 11 gibi bir değer) ulaşınca döngüyü kırıyoruz ve işlem bitiyor. Zaten döngünün sonunda birbirine oldukça yakın renk tonları ortaya çıkıyor. Sonra bu renkleri kutucuklara dizmek kalıyor.

http://i.hizliresim.com/mlo2y4.png

Biraz karışık anlattığımın farkındayım ama umarım faydalı olmuştur. Bu anlattığım Median Cut oluyor.

Scalar Quantization'ı burada anlatabileceğimi sanmıyorum Sadece şöyle özetleyebilirim: Hexadecimal haldeki renk kodlarını 10'luk tabana yani 0-255 arası bir değere çeviriyoruz ve belli renk aralıklarını belli renklerde topluyoruz. Mesela 0 ile 64 aralığındaki renkleri 20'de topluyoruz atıyorum. Böylelikle resimdeki renk sayısını azaltıp ona göre işlemlerimizi yapıyoruz.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BiLims
B
11 yıl
Çavuş

Yok yok gayet güzel anlattın bence :) Böyle proje ödevi veren okullar varmıymış, hocanız kimse kıymetini bilin :) Bi şey daha öğrendim teşekkür ettim





< Bu mesaj bu kişi tarafından değiştirildi BiLims -- 18 Mayıs 2014; 15:55:07 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @çemçük
Ç
11 yıl
Çavuş
Konu Sahibi

quote:

Orijinalden alıntı: BiLims

Yok yok gayet güzel anlattın bence :) Böyle proje ödevi veren okullar varmıymış, hocanız kimse kıymetini bilin :) Bi şey daha öğrendim teşekkür ettim

Rica ederim, faydam olduysa ne mutlu bana



E
11 yıl
Er

Merhaba,

öncelikle paylasim icin tessekürler. Beinde java ile senin yaptigin projeye yakin bir proje yapmam gerekiyor. Logolari analiz edip histogramlarini cikarip, hangi renklerden olustugunu bulmam gerekiyor. Resmi pixel pixel okumayi ve histogramlari cikarmayi yaptim fakat su median cut algoritmasini yapamiyorum. Sorun resmi dört parcaya böl derken, cikarmis oldugumuz pixel degerlerinden mi 4 parcaya bölmeliyiz, yoksa resmi yeniden isleyip mi dörde bölmeliyiz?

Sadece sormak istdim, bana bu projenin kodlarini yolluyabilirmisin?

Tessekürler

@çemçük


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @çemçük
O
11 yıl
Er

Scalar Quantization : Bir Görüntü İşleme Algoritmasıdır. Kullanım amacı ise, Bir resim üzerinde bulunan farklı renk tonlarını ve bu tonların sayısını bulmanın, daha doğrusu ençok kullanılan renk tonlarını bulmanın oldukça işlemci yorucu olmasından ileri gelmektedir. Bu algoritma sayesinde, bir resimde en çok kullanılan renk tonlarını, olabildiğince az işlemci kullanarak bulabiliyoruz. Algoritmayı sırasıyla madde madde inceleyecek olursak:
- Önce resim bir Bitmap'e alınır ve var olan boyutu, %10 - %20 oranına kadar küçültülür.(Resize) Örneğin 480x800 --> 48x80 gibi...
- Ardından yeniden boyutlandırmış olduğumuz resmimizin derinliğini ~%33 yaklaşık 3'te 1 oranına düşürüyoruz. Resimlerin derinliği genelde 24 bit olur. Bunu resime sağ tık -> Özellikler 'e tıklayıp -Ayrıntılar- kısmından görebiliriz. İşte bu 24 bitlik derinliği 8 bit'e düşürüyoruz.
- Son olarak ta bu işlemler sonucu elde ettiğimiz Bitmap'in üzerinde bir for döngüsüyle tüm pixellerini dolaşıyoruz ve en çok kullanılan renk tonunu buluyoruz.
Scalar Quantization bundan ibaret.

Bu yöntemler dizinine göre kodunuzu şekillendirebilirsiniz. Hem Resimi yeniden boyutlandırma, hemde derinliğini azaltma kodunu İnternetten rahatlıkla bulabilirsiniz. Umarım faydalı olur.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.