C++ ile Digital Image Proc. Edge Detection (Kenar algılama)

Başlatan Kaanx, 04 Aralık 2013, 00:06:40

Kaanx

Merhabalar dönem projesi olarak c++ ile görüntü işleme üzerine sobel kenar algılama projesi aldım.Borland C++ üzerinde sample verdi hoca modifiye ederek çözebilirisn dedi fakat olay cok farklı yollara döndü. Çözemeyince Vs10 ile opencv kullanarak yapmayı denedim opencv çalıstırdım fakat ondada sonuç alamadım. İnternette gezerken bu örnekleri buldum. Borland üzerinde bunları nasıl çalıştırablirim yada Dev C++ yada Visual studio c++ ile de olsa olur yeterki birisi çalışsısn.


http://www.programming-techniques.com/2013/03/sobel-and-prewitt-edge-detector-in-c.html


http://public.kitware.com/pub/itk/Examples/src/Filtering/ImageFeature/SobelEdgeDetectionImageFilter/Documentation.html


http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/sobel_derivatives/sobel_derivatives.html


http://opencv.wikispaces.com/6)+Canny+Edge+Detection


yardımcı olursanız yada örnek proje verebilirseniz çok makbule geçer. şimdiden çok teşekkürler.

atioky_216

yıllar once openCV kullanırken sobel filtresi diğer filtreler gibi (gradient vs..) çok kolay uygulanıyordu, api'si neyi vardı. mantık fotoları pointer ile teker teker işlemek...
devC++ yada vs kullan.. yaygın olarak openCV ile bunlar kullanılıyor. yardım daha kolay bulunur...

gumush

Konvoluzyon mantigini biliyorsunuzdur , yani bir filtreyi goruntu uzerinde dolastirma. Eger bunu yapabiliyorsaniz , sobel vb filtreleri uygulamak cok basit olacaktir.
C++ de matris islemleri var mi bilmiyorum. Eger var ise isiniz cok kolaylasir.

Matlab'de filtre icin yazdigim kod ;

% image filtering
% 2d convolution
clear,clc;
I=imread('coins.png');
kernel1=zeros(9,9);
% kernel1=[0 0 0 , 0 1 0 , 0 0 0];
[w,h]=size(I);
inew=zeros(w,h);

for i=5:w-4
      for j=5:h-4
          kernel1=I(i-4:i+4,j-4:j+4);
          kernel2=sum(sum(kernel1));
          inew(i,j)=1/81*kernel2;
      end
end

subplot(1,2,1); imshow(I);
subplot(1,2,2);imshow(inew,[]);


Kernel kismini sobel icin degistirmeniz yeterli.

Hikmet Gumus  izmir

atioky_216

Bu arada matlab bazı openCV apilerini destekliyordu. Bilmekte fayda var, 2 yıl once oyleydi şimdi ne olmuştur bilmiyorum...

muhittin_kaplan

kaan c++ ile değil ama c# ile yapılmış örnekler çalışıyor.
c++ için opencv örneğinin açıklanmış hali.
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html

berat23

hocanın verdiği örnek kodları ve tam olarak ne istediğini yazarsanız iyi olur.yapılamayacak iş gibi durmuyor.

gumush

Simdi disaridayim yarin kodlari aciklayayim...

Bu arada ismim hikmet imzamda da oldugu gibi , hoca sifatini hakedecek bir durumum yok. Arkadaslar ismimle hitap edebilirler.

Yarin gun icinde bildigim kadar filtre uygulamasinin manuel olarak nasil yapilabilecegini anlatmaya calisayim. ben gonzales ve solomon'un kitaplarindan okuyarak bir miktar fikir sabihi oldum.

Hikmet Gumus  izmir

Kaanx

Cevaplarınız için çok teşekkür ederim Visual Studio üzerinde C++ ve opencv library kullanımı ile edge detection kullanımını yaptım çok şükür.Şimdi 2. adım olarak yapmam gerek bir interface yapmak. Resim load edicek 2 tane kare olucak birisi load edilen resim 2. olan ise görüntünün işlenmiş halini göstericek daha ve image procces sekmesinde sobel yazıcak ve işlemi bu butona yaptırmam gerek. Nesnel dil bilgim burada sıfır kalıyor gerekli dökümanları aşagıda veriyorum umarım yardımcı olursunuz.

Edge detection yapmış oldugum --> http://kaankandemir.wordpress.com/2013/12/04/mvc2010-opencv-ile-kenar-algilama-edge-detection/


bendeki ekran görüntüsü;





istenilen konsept ;
1;


2;



istenilen konsept yani hocanın verdiği kodlar borland 6 c++ builderda çalışmakta ve ben ise visual studio içinde yaptım ve hocanın kodlarına buradan ulaşabilirsiniz.

http://ctmtc.utcluj.ro:8080/sites/pni/pni/Materiale/Forms/AllItems.aspx?RootFolder=%2Fsites%2Fpni%2Fpni%2FMateriale%2FProject_2012_2013_eng&FolderCTID=0x0120009506A562D9170B40A6CF60652F7844AB&View=%7B9A8277B2-BE9D-4FFF-846F-1B017CE0A794%7D

ProjectPNI dosyası proje dosyasıdır. şimdiden cok teşekkürler.

atioky_216

borlandı değil de direk vs'i kullansana arayüz yaparken.
CLR projesi oluşturunca openCV derlemesi sorun çıkarmaması lazım. Zaten .net benzeri bir yapı, kullanımı rahat olur senin için.

Kaanx

Borland ben kullanmıyorum hoca kullanıyor vs kullanıyorum hocam zaten ama vs de nasıl yapıcam bilmiyorum. menustrip mi eklemem mi gerekiyor ?