Generating Gaussian Noise in OpenCV Mat Image using QT
Hi Everyone! I have been trying to add Additive White Gaussian Noise in my Mat image(Using Qt 5.2.0) using the following piece of code, but i am getting the original image only. No noise is being added! Please can anyone help me by telling where I am going wrong!
@ cv::Mat gaussianD; cv::Mat gaussian = grImage.clone(); gaussian.convertTo(gaussianD, CV_32F); cv::Mat mult = cv::Mat::zeros(grImage.rows, grImage.cols, CV_32F); cv::randn(mult, 0, ui->doubleSpinBox_sDev->value()); gaussianD = gaussianD + sqrt(ui->doubleSpinBox_sDev->value())*mult; gaussianD.convertTo(gaussianD, CV_8U); cv::namedWindow("Gaussian Noise"); cv::imshow("Gaussian Noise", gaussianD); cv::imwrite("gaussian.jpg", gaussianD); gauss.load("gaussian.jpg"); ui->label_NoiseImg->setPixmap(QPixmap::fromImage(gauss.scaled(ui->label_NoiseImg->size(), Qt::KeepAspectRatio)));@
Here grImage is my original grayscale image, double spinbox s_Dev gives the value of the variance defined by the user, and mult is the array of gaussian random nos.
Hi and welcome to devnet,
does your namedWindow show the correct image ?
If not, you should first check your OpenCV code
Thanks for the reply SGaist,
I have been using the same code for namedwindow in the entire project and it shows the correct image, so i don't think dats the problem! My guess is that the noise which is being infused in the image is too small to really have any effect on the final image, but why is that happening i dont know! Any suggestions or help is utmost welcome!
Jpeg compression ? Try to save your image in an uncompressed format