Matlabta kamerayı kullanarak sarı rengi tanımlamam ve bunu arduino kullanarak arduinoda ışık yaktırmam lazım. Herşeyi hallettim ama Matlabta nasıl sarı rengini tanımlayacağımı bulamadım. Yardımcı olursanız sevinirim.
Merhaba,
Aşağıdaki bağlantılarda sorunuzun cevabını bulabilir, takıldığınız yer olursa tekrar sorabilirsiniz:
- http://www.mcu-turkey.com/matlab-ile-kirmizi-bir-nesne-algilandiginda-arduino-ile-led-yakmak/
- (Ingilizce) http://www.instructables.com/id/Red-Color-Recognition-based-Arduino-controlUsing-M/
RGB yani kırmızı yeşil ve mavi renklerini tanımlayabilirim onlarda sorun yok. Benim sorunum mesela matlaba sarı rengini gördüğünde 7 numaralı pine bağlı ledi yakmasını hangi kodu kullanarak yapabilirim. Daha doğrusu matlaba sarıyı nasıl tanımlayabilirim.
Kamerada gördüğünüzün sarı renk olup olmadığını anlamanız gerekiyor galiba. Eğer sabit bir tonda görüntü arıyorsanız görüntünüzden bunun bilgisini alabilirsiniz.
color=impixel(goruntu, x_koordinat, y_koordinat);
Bu rengi aldıktan sonra, diğer görüntü noktalarını bu renkle kıyaslamak için de çıkarma işlemiyle kıyas yapabilirsiniz. Aşağıdaki kodda hata_payi değişkeni üzerinden renk değişimi için belli miktarda pay bıraktık. Sabit bir ton gerekiyorsa aşağıdaki fark değişkeni 0 olmalı.
fark=norm(impixel(yeni_goruntu, x_koordinat, y_koordinat)-color); hata_payi=0.1; if fark/norm(color) < hata_payi %fark'ın rengin asıl tonuna oranı hata_payi'ndan küçükse Matlab'a 'Renk bulundu' yazdırılıyor. disp('Renk bulundu'); else disp('Renk bulunamadı'); end
Tüm resmi aramak isterseniz x_koordinat ve y_koordinat değerlerinin tarandığı for döngüleri de kurabilirsiniz.
Matlab'da önceden tanımlanmış bir sarı renk kullanmak istiyorsanız bunu RGB ile yapabilirsiniz. RGB kırmızı-yeşil-mavi üzerinden tüm renkleri tanımlayabilmenizi sağlar. Aşağıdaki linkte bazı sarı tonlarının RGB tanımları var. Yukarıdaki color değişkenini bu listedeki bir rengin 3 değeri üzerinden vektör olarak tanımlayarak kodun geri kalanını aynı şekilde kullanabilirsiniz.
http://www.rapidtables.com/web/color/Yellow_Color.htm
diff_im = imsubtract(data(:,:,1), rgb2gray(data)); diff_im = medfilt2(diff_im, [3 3]); diff_im = im2bw(diff_im,0.3); diff_im = bwareaopen(diff_im,200); bw = bwlabel(diff_im, 4); toplam=sum(sum(bw)); % Kırmızı algılandığında yapılacaklar if (toplam>20) writeDigitalPin(a,'D2',1); pause(0.1); writeDigitalPin(a,'D2',0); pause(0.1); end
Bakın yukarıdaki örnekteki kod mesela kırmızı algılıyor ve bu renk algılandığında if statement kısmında yapılacak yazıyor. Benim bunun aynısının sarı renk için olanına ihtiyacım var.