opencv
इमेज प्रोसेसिंग
खोज…
वाक्य - विन्यास
- गाऊसी ब्लर सिंटैक्स C ++: void GaussianBlur (InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, intrType = BORDER_DEFAULT)
पैरामीटर
गॉसियन ब्लर के पैरामीटर | विवरण |
---|---|
src | इनपुट छवि, छवि में किसी भी संख्या में चैनल हो सकते हैं, जो स्वतंत्र रूप से संसाधित होते हैं, लेकिन गहराई CV_8U , CV_16U , CV_16S , CV_32F या CV_64F । |
डीएसटी | उसी आकार की आउटपुट छवि और src रूप में टाइप करें |
ksize | गाऊसी कर्नेल आकार। ksize.width और ksize.height अलग हो सकते हैं लेकिन वे दोनों सकारात्मक और विषम होने चाहिए। या, वे शून्य हो सकते हैं और फिर उन्हें सिग्मा * से गणना की जाती है। |
sigmaX | एक्स दिशा में गाऊसी कर्नेल मानक विचलन। |
sigmaY | गॉसियन कर्नेल मानक विचलन Y दिशा में । अगर sigmaY शून्य है, तो यह sigmaX बराबर होना sigmaX , यदि दोनों sigmaX शून्य हैं, तो उनकी गणना ksize.width और ksize.height से की जाती है। इस सभी शब्दार्थों के संभावित भविष्य के संशोधनों की परवाह किए बिना परिणाम को पूरी तरह से नियंत्रित करने के लिए, इसे ksize , sigmaX और sigmaY सभी को निर्दिष्ट करने की ksize sigmaY । |
borderType | पिक्सेल एक्सट्रपलेशन विधि। |
टिप्पणियों
मुझे नहीं लगता कि इस जगह पर गौसिंग ब्लर के लिए सिंटैक्स और मापदंडों को विशिष्ट बनाना समझ में आता है क्योंकि विषय इतना व्यापक है कि इसमें कई अन्य उदाहरण शामिल होने चाहिए
C ++ में गाऊसी ब्लर के साथ स्मूदिंग इमेज
स्मूथिंग, जिसे ब्लरिंग के रूप में भी जाना जाता है, इमेज प्रोसेसिंग में सबसे अधिक उपयोग किए जाने वाले ऑपरेशन में से एक है।
चौरसाई ऑपरेशन का सबसे आम उपयोग आगे की प्रक्रिया के लिए छवि में शोर को कम करना है।
स्मूथिंग ऑपरेशन करने के लिए कई एल्गोरिदम हैं।
हम एक छवि को धुंधला करने के लिए सबसे अधिक इस्तेमाल किए जाने वाले फिल्टर में से एक को देखेंगे, ओपनसीवी लाइब्रेरी फ़ंक्शन GaussianBlur()
का उपयोग करके गॉसियन फ़िल्टर । यह फ़िल्टर विशेष रूप से छवियों से उच्च-आवृत्ति शोर को हटाने के लिए डिज़ाइन किया गया है।
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv){
Mat image , blurredImage;
// Load the image file
image = imread(argv[1], CV_LOAD_IMAGE_COLOR);
// Report error if image could not be loaded
if(!image.data){
cout<<"Error loading image" << "\n";
return -1;
}
// Apply the Gaussian Blur filter.
// The Size object determines the size of the filter (the "range" of the blur)
GaussianBlur( image, blurredImage, Size( 9, 9 ), 1.0);
// Show the blurred image in a named window
imshow("Blurred Image" , blurredImage);
// Wait indefinitely untill the user presses a key
waitKey(0);
return 0;
}
विस्तृत गणितीय परिभाषा और अन्य प्रकार के फिल्टर के लिए आप मूल दस्तावेज की जांच कर सकते हैं।
थ्रेशोल्डिंग
पायथन में:
import cv2
image_path= 'd:/contour.png'
img = cv2.imread(image_path)
#display image before thresholding
cv2.imshow('I am an image display window',img)
cv2.waitKey(0)
#convert image to gray scale - needed for thresholding
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#apply threshold to gray image to obtain binary image
threshold=150 #value above which pixel values will be set to max_value
max_value=255 #value to which pixels above threshold will be set
threshold_stype=cv2.THRESH_BINARY #default threshold method
ret, img_binary = cv2.threshold(img_gray, threshold, max_value, threshold_stype)
#display image after thresholding
cv2.imshow('image after applying threshold',img_binary)
cv2.waitKey(0)
#save the binary image
cv2.imwrite('d:/binary.png',img_binary)
cv2.destroyAllWindows()
द्विपक्षीय फ़िल्टरिंग
छवि प्रसंस्करण अनुप्रयोगों में, द्विपक्षीय फिल्टर एक विशेष प्रकार के गैर-रैखिक फिल्टर हैं ।
खोई हुई संरचना और शोर को हटाने के बीच एक व्यापार बंद है, क्योंकि शोर को हटाने के लिए सबसे लोकप्रिय तरीका गाऊसी धुंधलापन है जो छवि की संरचना के बारे में पता नहीं है; इसलिए, यह किनारों को भी हटा देता है। ज्यादातर समय, किनारों में दृश्य के बारे में मूल्यवान जानकारी होती है और हम इसे ढीला नहीं करना चाहते हैं। द्विपक्षीय फिल्टर दृश्य की संरचना से अवगत है और यह किनारों के बिना एक क्षेत्र पर होने पर शास्त्रीय धुंधला फिल्टर की तरह कार्य करता है; हालाँकि, जब यह एक बढ़त देखता है, तो यह अपने व्यवहार को बदल देता है; ताकि, ब्लरिंग किनारों पर काम न करे, लेकिन यह किनारों के साथ काम करता है, जिसका अर्थ है कि वे किनारे-संरक्षण फिल्टर हैं ।
#include <opencv2/opencv.hpp>
#include <iostream>
void main(int argc, char* argv[]) {
if(argc==1) {
std::cout << argv[0] << " <image>" << endl;
return;
}
cv::Mat image, output;
image = cv::imread(argv[1]);
if(image.empty()) {
std::cout << "Unable to load the image: " << argv[1] << endl;
return;
}
cv::bilateralFilter(image, output, 3, 5, 3);
}