gpt4 book ai didi

java - 如何使用java opencv对图像进行去噪

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:20 26 4
gpt4 key购买 nike

在我的例子中,我想删除图像中的所有黑点。在这里我的形象可以呈现如下。当我使用我的程序时,图像正在平滑,但是程序没有删除黑点。请帮我去除黑点。请尽快回复我 Original Image 代码如下。

public class Denoise {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try{
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat source =Imgcodecs.imread("C:\\Users\\My Kindom\\Downloads\\printscreen.JPG",Imgcodecs.CV_LOAD_IMAGE_COLOR);

Mat destination = new Mat(source.rows(),source.cols(),source.type());
destination = source;
Photo.fastNlMeansDenoisingColored(source,destination, 10, 10, 7, 21);
Imgcodecs.imwrite("C:\\Users\\My Kindom\\Downloads\\Denoise.jpg", destination);

}catch(Exception e){}
// TODO code application logic here
}

Destination Image

最佳答案

简单地说,您可以应用阈值来分割黑点。然后,将其用作 mask ,进行修复。修复不会像去噪那样影响图像的其他区域。我不太确定黑点是什么意思,所以我应用了一个简单的阈值。您可以尝试使用不同的阈值,使用 inRange 或其他任何方法来生成掩码。我也在使用任意修复半径。您可以通过分析蒙版中的轮廓区域然后确定半径来使其变得更好。

原创

original

mask 和修复:阈值 = 70,半径 = 20

mask70 dn70

mask 和修复:阈值 = 100,半径 = 20

mask100 dn100

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;
import org.opencv.photo.Photo;

public class Dnoise {

public static void doDnoise()
{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

Mat rgb = Highgui.imread("ybD8q.jpg");

Mat gray = new Mat(rgb.size(), CvType.CV_8U);
Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_BGR2GRAY);
Mat mask = new Mat(rgb.size(), CvType.CV_8U);
Imgproc.threshold(gray, mask, 70, 255, Imgproc.THRESH_BINARY_INV);
Mat dn = new Mat(rgb.size(), CvType.CV_8UC3);
Photo.inpaint(rgb, mask, dn, 20, Photo.INPAINT_TELEA);
}

}

关于java - 如何使用java opencv对图像进行去噪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com