En yeni OpenCV'yi kullanarak, belirli bir cv :: Mat'nin degrade görüntüsünü hesaplamanın kolay bir yolu var mı?Bir görüntünün gradyanını hesaplamak için OpenCV'de hızlı ve kolay bir yol var mı?
5
A
cevap
14
Tipik image gradient; Bunları Chris tarafından belirtildiği gibi Sobel operatörüyle kolayca hesaplayabilirsiniz. Sobel Türevleri öğretici here bir göz atın. Ayrıca, Laplace işleci ve tutorial ile de ilgilenebilirsiniz.
cv::Mat src = ...; // Fill the input somehow.
cv::Mat Dx;
cv::Sobel(src, Dx, CV_64F, 1, 0, 3);
cv::Mat Dy;
cv::Sobel(src, Dy, CV_64F, 0, 1, 3);
0
mevatron söylediği gibi: İşte
sobel kullanarak X ve Y geçişlerini hesaplama kısa snippet'tir Sobel ve Laplace operatörleri güçlü, ama Scharr operatörü, unutma ki Sobel'in sahip olduğu 3 × 3 çekirdeğinde daha fazla doğruluk var. Gönderen
4
:
IplImage * diffsizekernel(IplImage *img, int f, int c) {
float dkernel[] = {-1, 0, 1};
CvMat kernel = cvMat(f, c, CV_32FC1, dkernel);
IplImage *imgDiff = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_16S, 1);
cvFilter2D(img, imgDiff, &kernel, cvPoint(-1,-1));
return imgDiff;
}
IplImage * diffx(IplImage *img) {
return diffsizekernel(img, 3, 1);
}
IplImage * diffy(IplImage *img) {
return diffsizekernel(img, 1, 3);
}
İlgili konular
- 1. İşlev sonuçlarının ortalama değerini hesaplamak/biriktirmek yerine hesaplamak için daha hızlı bir yol var mı?
- 2. R'de değişkenleri aramak için hızlı bir yol var mı?
- 3. WP8: Windows telefon uygulaması için bir BitmapImage ölçeklendirmek ve bulanıklaştırmak için kolay bir yol var mı?
- 4. 3d nokta bulutunun minimum sınırlayıcı kutusunu hesaplamak için hızlı ve güçlü bir uygulama var mı?
- 5. Bir jQuery komut dizisinin bir olay olarak adlandırıldığını öğrenmek için kolay bir yol var mı?
- 6. Erlang'da bir sububsub kayıt alanındaki bir değeri değiştirmek için daha kolay bir yol var mı?
- 7. Bir matrisin tersini diyagonal hesaplamak için etkili bir yol
- 8. Kod karmaşasını hesaplamak için Java için bir API var mı?
- 9. Kovaryans bildirmek için bir yol var mı?
- 10. Çıkış yapmak için daha iyi ve/veya daha kolay bir yol var mı?
- 11. Dosyalarda dolaşmak için kolay bir yol C#
- 12. SQL Server, insert tetikleyicileri yerine - tek bir sütunu değiştirmek için kolay bir yol var mı?
- 13. Bir Tumblr temasının html'sini arayüzlerini kullanmadan düzenlemek için daha kolay bir yol var mı?
- 14. Noktadan veya dal kaynağından "git diff" için hızlı bir yol var mı?
- 15. Uygulamayı başlatmadan iPhone'a (XCode'dan) kurmak ve kurmak için hızlı bir yol var mı?
- 16. Bir mermi arşivi eserlerini temizlemenin kolay bir yolu var mı?
- 17. Python'daki bir görüntünün her bir pikselinden geçmenin daha hızlı yolu?
- 18. TortoiseHg'deki tüm etiketleri görmek için. Aralarında geçiş yapmak ve hesaplamak için herhangi bir kullanışlı yol var mı?
- 19. Bir Fotoğrafı Fotoğraf Kütüphanesine kaydetmek için bir yol var mı?
- 20. Bir nesnedeki değişiklikleri izlemek için bir yol var mı?
- 21. SASS'de bir dersi “genişletmek” için bir yol var mı?
- 22. @RequestMapping kullanıldığında, denetleyici eşleştirmesi için hızlı bir arama var mı?
- 23. Bir formun metninin sığacağını belirlemek için bir yol var mı?
- 24. Elixir'de bir fonksiyonun kontrol edilmesi için bir yol var mı?
- 25. Bir pdf'yi C# ile düzenlemek için bir yol var mı?
- 26. Uzak bir deposu "tanımlamak" için basit bir yol var mı?
- 27. HTTPBuilder'a geçersiz bir sertifikayı yok saymasını söylemek daha kolay bir yol var mı?
- 28. Görüntülerin eğimli hale getirilmesinin kolay bir yolu var mı?
- 29. Her döngü için paralel olması için bir yol var mı?
- 30. Bu bellek hatasını önlemek için bir yol var mı?
Bir numune görüntüsünü ve beklenen sonuçlar güzel olurdu: http://en.wikipedia.org/wiki/Image_gradient, sen yapabilirsiniz. – Sonaten
Türevleri hesaplayan Sobel operatörünü mi arıyorsunuz? [Belgeler burada] (http://opencv.itseez.com/modules/imgproc/doc/filtering.html#sobel). – Chris