Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Image process

Başlatan z, 07 Şubat 2016, 14:59:18

z

#15
Projeyi neticelendirip neticelendirmemek hayati bir sorun değil yapmasam da olur. OpenCV vs e muhtaç kalacaksam projeyi bitirmeme gerek yok atarım bir kenera.
Bu yüzden OpenCV, Matlap gibi önerileri istemiyorum.


@sovalye

Resim dosyasını XY array içine atıyorum zaten. Gürültüden de Klein'in verdiği linkteki bilgilerle kurtulacağım.

Şimdi elimde XY array içinde siyah bilgilere sahip olduğumu varsayalım.

Doğru denklemini nasıl elde edeceğim? Biraz daha açıklarmısın?

Yakında video kareleriini ve yaptığım işlem sonucu elde ettiğim görüntüleri de yayınlayacağım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sovalye

Hocam , siyah noktaları (x,y) olacak şekilde dizi haline getirdiyseniz. Benim kodu biraz değiştirip kullanabilirsiniz.

Öncelikle döküman ekleyeyim teknik detaylar için. https://www.coursera.org/learn/machine-learning/supplement/Mc0tF/linear-regression-with-one-variable
Denkemimiz y=ax+b ;
Yaptığımız iş en başında random a ve b değerleri atamak ve bir hata fonksiyonu(dökümandaki Cost Function) oluşturmak. Amacımız bu hata fonksiyonunu minimum yapan a ve b değerlerini bulmak. Bunun için gradient descent denen işlemi yapacağız( calculus dersi ) . Fonksiyonun grafiği üzerindeki minumuma ulaşmaya çalışıyoruz. Bulunduğumuz noktadaki eğim aslında bu minumum noktaya giden bir vektördür. Bu vektörü alıp bir öğrenme katsayısı ile çarparız. ve çıkan değere göre a ve b mizi biraz değiştiririz hata fonksiyonumuzu tekrar hesaplar ve yeniden bir vektör buluruz. Bu işlemi bulduğumuz vektör sıfır olana kadar devam ettiririz.

Şuraya vakti zamanında kendi yazdığım kodu da ekleyeyim. sens ve rate değişkenlerini değiştirerek denklemin kesinliğini ve hesaplama süresini değiştirebilirsiniz.
Ben random 5x+12 ye benzeyecek sayılar oluşturdum. denklemi de buna göre hesaplattırdım.
mesela sens=100000 iken denklemi y=4.92 * x +12.91 olarak hesaplıyor ve 470000 cycle harcıyor ama sens= 10000 yaparsak denklemi y=5.13 *x + 0.101 olarak hesaplayıp 310 cycle zaman harcıyor.
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main() {
	ifstream dosya;
	dosya.open("a.txt");
	float q1=0,q2=0,temp1=0,temp2=0,h1=0,h2=0,prs,rate= 0.00001;
	vector <float> x, y;
	int r1, r2, sens = 100000; // sens buldugumuz vektoru ne zaman 0 kabul edebilecegimiz
	while (!dosya.eof()) {
		dosya >> r1 >> r2;
		x.push_back(r1);
		y.push_back(r2);
	}
	int count=0;
	while(1){
		for (int i = 0; i < x.size(); i++) {
			prs = rate*((q1 + q2*x[i] - y[i]) / x.size()); 
			h1 += prs;
			h2 += prs*x[i];
		}
			temp1 = q1 - h1;
			temp2 = q2 - h2;
			if (int(q1*sens) == int(temp1 * sens) && int(q2 * sens) == int(temp2 * sens)) break;  
			q1 = temp1;
			q2 = temp2;
			h1 = 0;
			h2 = 0;
			count++;
	}
	
	cout << "y= " << q2 << "*x + " << q1 <<" counter=" << count <<  endl;
	cin >> q1;
	return 0;
}

a.txt 'nin içeriği.
1 17
45 230
23 145
9 58
12 73
86 435
60 322
19 112
18 97
3 26
29 153
17 99
55 287
73 371
84 421

berat23

o resim için şu uygun;

öncelikle erosion uygularsanız çizgi belirginleşir, siyah noktalar azalır. sonrasında ben olsam hough transform ile line bulurum.

ha keza entegre tanımak için de hough transform iyidir. böyle geometrik şekilleri decet etmede hough transform elegan bir algoritmadır.

tabi öncesine preprocessing şart. o fotoğrafın şekildiği ortama, arka plana vs. bağlı birşey.

z

#18


Soldaki kameradan alınan ham görüntü. Sağdaki ise işlemeyi düşündüğüm yarı mamul görüntü.

mesaj birleştirme:: 12 Şubat 2016, 16:11:37

Fotograflamayı çipi alttan ışıklandırarak elde ettim. Üstten çok az ışık verdim. Böyle yapmazsam çip yüzeyindeki yazılar da işin çine giriyor ve bacaklarla çipin birleştiği yerlerde keskin renk değişimi olmuyor.

Buzlu bir camı alttan ışıklandıracağım.

Camın üstüne çip boyutlarında içi boş kırmızı bir kare çizeceğim.

Çip yokken bu karenin kırmızı renklerini sayacağım. Çip bu karenin tam ortasında ise kırmızı karenin kırmızı renk sayısını belli bir hata ile gene aynı sayacağım.

Eğer çip açılı duruyorsa kırmızı nokta sayısındaki hata artacak.

Bu mantığı bir deneyeyim.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

bluekid

Delphide nasıl Ekrana pencereyi kendim çizdireceğim deyip windows API larıyla cebelleşmeyip VCL kullanılıyorsa
Görüntü işleme ile ilgili bir şeyler yaparken bu iş için yazılmış kütüphaneler kullanmak daha doğru olur.
İlla OpenCv olmak zorunda da değil elbette 

Bunun yanında OpenCv den çekinmenize gerek yok  pek çok görüntü işleme algoritması hazır elinizin altında oluyor.
C++ ile yazıldığından C# python java gibi pek çok dil üzerinden çağrılabiliyor. İlla Delphii diyorsanız ordan kullananlarda var
mesela
https://github.com/Laex/Delphi-OpenCV

internette aratırsanız pek çok çalışma ve kütüphane bulabilirsiniz

Son gönderdiğiniz örnek için konuşursak
Resme threshol uygulayıp binary hale çevrilir.
aşındırma -erosion- ile kenardaki ayakları silinir
genişletme  - dialtion - ile çip aşındırılmadan önceki hale getirilir.
dış hat bulunur - contour -
dış hatın sığacağı minim bir - dönük - dikdörtgen  bulunur.
bu dikdörtgenin isterseniz köşe noktalarını isterseniz açısını alıp işleminiz yapabilirsiniz
çipin sol alt köşesinde mavi bir yuvarlak var
o da ayrı olarak tespit edilebilir elbette lazımsa


muhittin_kaplan

yok olmaz, kütüphane olmaz.

z

Kütüphane olmaz.

Belki ileride bu kamera kısmını PC den kurtarıp STM ile yapacağım.



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Karamel

Alıntı yapılan: z - 12 Şubat 2016, 19:03:45
Kütüphane olmaz.

Belki ileride bu kamera kısmını PC den kurtarıp STM ile yapacağım.

Hocam kutuphaneye itiraz ediyor gibi gorunmek istemem. Stm microcontroller ile image processing yavas olmazmi?

z

#23
Birazdan bir video yayınlayacağım. Bulduğum Zoptik Zalgoritma Zütüphanesi ile STM işlemciler yapabilir mi sen karar ver.


mesaj birleştirme:: 12 Şubat 2016, 19:48:37

Evet arkadaşlar Zoptik Zalgoritması hayırlı olsun.

https://youtu.be/6S1hkbiSUh8
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Karamel

hocam merhaba.

oncelikle code lari basarabildiginiz icin sizi tebrik ederim ::)

hocam ben sorumu yapamazsiniz. beceremezsiniz. ugrasmayin boyle seylerle kafasinda sormadim. mucit hocamin surada https://www.picproje.org/index.php/topic,63243.msg490234.html#msg490234 ugrastigi konudan referans alinarak. mesela camera icin 640x480 pixrl kullanilsa. 307200 for islemi sadece pixellere ulasabilmek icin harcaniyor. mesela resmi siyah beyaz yapmak icin(bu karartma algoritmasi nasil bilmiyorum. o yuzden siyah beyaz yapmak algoritmasini yaziyorum) P[0][0] = (R + G + B) / 3

bu code u kac cycle da yapar bilmiyorum? ayrica yukaridaki for islemlerini kac cycle da yapar bunu da hesaplayip digerleri ile carpinca. cok islem gubu harcamasi gerekmezmi?  :-\

resim cekip. bunu islese okay ama sanirim size real time isleme gerekli?

sizin yeni algorithm daha az cycle ile becerebilirse. olmamasi icin tabikide sebep yok. insallah stm32 ilede yaparsiniz hocam ::)

z

Çok ucuz fotograf makinelerinin işlemcileri bile bayağı bir optik işleme yapabiliyor.

STM32F4 serisi sanırım tam da bu işler için.

Yok ben kütüphane ile vs yapacağım dersek Böğürtlen Çilek Ahududu serisi minik kartlar kullanılabilir.

Bir de asm faktörü var.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Birde RAM faktörü var abi. Daha önce bu konuya takıldım oradan biliyorum.

Gerçi işin içinde Z faktörü olduğunuda unutmamak lazım.

Klein

üstten parçayı tutup alttan aydınlatmaa yaparken kmerayı nereye yerleştirmeyi düşünüyorsun abi?

z

#28
Şu anda kamera yazılımı ile uğraştığım için deneme amaçlı böyle bir düzenek kurdum.

Makinede durum biraz farklı olacak.

Kamera şaseye bağlı ve mercek havaya bakayacak. Derlini delip ortasından çipi vakumlayan boruyu geçireceğim ve gene derlini arkadan ışıklandıracağım. Çip kameranın önüne getirildiğinde ışık kaynağı ve derlin parça çiple beraber hareket etmiş olacak.

Yani videodaki düzenek tepe taklak olacak. 

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

leblebitozu

stm32f427 ile yapılmış opensource imaj tanıma modülü

https://openmv.io/