如何使用 OpenCV 锐化图像?有许多平滑或模糊的方法,但没有我能看到的锐化 .
一个通用程序在_1297583中列出:您使用高斯平滑滤波器并从原始图像中减去平滑后的版本(以加权方式,以便恒定区域的值保持不变) .
将 frame 的锐化版本转换为 image :(均为 cv::Mat )
frame
image
cv::Mat
cv::GaussianBlur(frame, image, cv::Size(0, 0), 3); cv::addWeighted(frame, 1.5, image, -0.5, 0, image);
您需要为自己调整参数 .
还有laplacian锐化,你应该在谷歌上找到一些东西 .
您可以尝试一个简单的 kernel 和 filter2D 函数,例如在Python中:
kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]]) im = cv2.filter2D(im, -1, kernel)
维基百科对内核有一个很好的概述,这里有更多的例子 - https://en.wikipedia.org/wiki/Kernel_(image_processing)
在图像处理中,内核,卷积矩阵或掩码是一个小矩阵 . 它用于模糊,锐化,压花,边缘检测等 . 这是通过在内核和图像之间进行卷积来实现的 .
你可以在OpenCV Documentation找到关于 sharpening image using "unsharp mask" algorithm 的示例代码
更改 sigma , threshold , amount 的值会产生不同的结果
sigma
threshold
amount
// sharpen image using "unsharp mask" algorithm Mat blurred; double sigma = 1, threshold = 5, amount = 1; GaussianBlur(img, blurred, Size(), sigma, sigma); Mat lowContrastMask = abs(img - blurred) < threshold; Mat sharpened = img*(1+amount) + blurred*(-amount); img.copyTo(sharpened, lowContrastMask);
为了清楚本主题,我们应该做几点:
锐化图像是一个不适定的问题 . 换句话说,模糊是一种有损操作,并且从它返回通常是不可能的 .
要锐化单个图像,您需要以某种方式添加约束(假设),指出您想要的图像类型以及它如何变得模糊 . 这是自然图像统计的领域 . 进行锐化的方法在其算法中明确地或隐含地保存这些统计数据(深度学习是最隐式编码的) . 增加某些级别的一般方法,即Brian Burns答案的概括,假设高斯模糊破坏了图像,加权的方式与图像中的内容的假设有关 . 首先 .
其他信息来源可以使问题锐化得很好 . 常见的这种信息源是移动物体的视频或多视图设置 . 在该设置中锐化通常被称为super-resolution(这是一个非常糟糕的名称,但它已经停留在学术界) . 很长一段时间以来都有super-resolution methods in OpenCV尽管他们通常不能很好地解决真正的问题,但最后还是检查出来了 . 我希望深度学习也能在这里产生一些很好的结果 . 也许有人会发表有关那些有 Value 的评论 .
试试这个:
cv::bilateralFilter(img,9,75,75);
您可能会找到更多信息here
5 回答
一个通用程序在_1297583中列出:您使用高斯平滑滤波器并从原始图像中减去平滑后的版本(以加权方式,以便恒定区域的值保持不变) .
将
frame
的锐化版本转换为image
:(均为cv::Mat
)您需要为自己调整参数 .
还有laplacian锐化,你应该在谷歌上找到一些东西 .
您可以尝试一个简单的 kernel 和 filter2D 函数,例如在Python中:
维基百科对内核有一个很好的概述,这里有更多的例子 - https://en.wikipedia.org/wiki/Kernel_(image_processing)
你可以在OpenCV Documentation找到关于 sharpening image using "unsharp mask" algorithm 的示例代码
更改
sigma
,threshold
,amount
的值会产生不同的结果为了清楚本主题,我们应该做几点:
锐化图像是一个不适定的问题 . 换句话说,模糊是一种有损操作,并且从它返回通常是不可能的 .
要锐化单个图像,您需要以某种方式添加约束(假设),指出您想要的图像类型以及它如何变得模糊 . 这是自然图像统计的领域 . 进行锐化的方法在其算法中明确地或隐含地保存这些统计数据(深度学习是最隐式编码的) . 增加某些级别的一般方法,即Brian Burns答案的概括,假设高斯模糊破坏了图像,加权的方式与图像中的内容的假设有关 . 首先 .
其他信息来源可以使问题锐化得很好 . 常见的这种信息源是移动物体的视频或多视图设置 . 在该设置中锐化通常被称为super-resolution(这是一个非常糟糕的名称,但它已经停留在学术界) . 很长一段时间以来都有super-resolution methods in OpenCV尽管他们通常不能很好地解决真正的问题,但最后还是检查出来了 . 我希望深度学习也能在这里产生一些很好的结果 . 也许有人会发表有关那些有 Value 的评论 .
试试这个:
您可能会找到更多信息here