相关疑难解决方法(0)

如何使用MATLAB校正图像中的不均匀照明?

我正在使用MATLAB在视频中执行特征检测.视频的不同部分的光照条件会有所不同,导致某些部分在将RGB图像转换为二进制图像时被忽略.

视频的特定部分中的照明条件也在视频的过程中改变.

您能否在MATLAB中建议最佳方法来平衡帧和视频的照明?

matlab lighting image-processing computer-vision

6
推荐指数
3
解决办法
2万
查看次数

OCR 的字符重建和填充

我正在研究轮胎上的文本识别。为了使用 OCR,我必须首先获得清晰的二值图。

我已经处理了图像,文本出现边缘破损和不连续的情况。我已经在 MATLAB 中尝试过使用圆盘和线元素进行标准腐蚀/膨胀,但它并没有真正帮助。

Pr1-关于如何重建这些字符并填补字符笔划之间的空白的任何想法?

原图_highres 原始图像_lowRes 检测到精明的边缘

Pr2- 上面的图像分辨率更高,光照良好。但是,如果如下图所示,照明较差且分辨率相对较低,那么可行的处理选项是什么?

在此处输入图片说明

尝试的解决方案:

S1:这是对Spektre共享的处理过的图像应用中值滤波器的结果。为了去除噪声,我应用了中值滤波器 (5x5),随后使用线元素 (5,11) 进行图像膨胀。即使现在 OCR (Matlab 2014b) 也只能识别一些字符

无论如何,非常感谢到目前为止的建议。我仍然会等着看是否有人可以提出不同的建议,也许是开箱即用的:)。

在此处输入图片说明

Matlab 实现以下 Spektre 代码中的步骤的结果(没有笔画扩张(按 1、2、3、4 的顺序对角进行标准化:

在此处输入图片说明

并且阈值 tr0=400 和 tr1=180 以及归一化的角顺序 1,3,2,4 在此处输入图片说明

此致

瓦贾哈特

ocr matlab image-processing edge-detection

5
推荐指数
1
解决办法
3116
查看次数

如何在 opencv 4.4.0 版上正确使用 cv2.findContours()?

我试图在 opencv 4.4.0 版上使用 cv2.findContours()。(我使用的是 Python 3.8.5 版)但它抛出了一个错误,我无法弄清楚。我不确定代码有什么问题。这是一些背景:

  • 根据 OpenCV, cv2.findContours() 的语法如下: Python: contours, hierarchy = cv.findContours( image, mode, method[, contours[, hierarchy[, offset]]] )

  • 我找了一些例子来确保如何正确实现它,这是我发现的:example 1 _, contours, _ = cv2.findContours(binary_image,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

示例 2 (_, cnts, _) = cv2.findContours(thresholded.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

这些是我在网上找到的工作项目,有很多这样的例子。所以,我试图实现我从视频中获得的一些代码,以对该主题有一些了解,但它似乎对我不起作用,我找不到原因。代码如下:

import cv2 
import numpy as np 

imagen =cv2.imread('lettuce.jpg')
gray = cv2.cvtColor(imagen,cv2.COLOR_BGR2GRAY)
_,binary = cv2.threshold(gray,100,255,cv2.THRESH_BINARY)

image,contours,hierarchy = cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(image,contours, -1, (0,255,0),3)
Run Code Online (Sandbox Code Playgroud)

错误:回溯(最近一次调用):第 8 行,在图像、轮廓、层次结构 = cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) ValueError:没有足够的值来解包(预期 3,得到 2)

python opencv

2
推荐指数
1
解决办法
4346
查看次数