标签: adaptive-threshold

自适应阈值错误:(-215:断言失败)函数“adaptiveThreshold”中的 src.type() == CV_8UC1

我正在研究预训练的 vgg16 模型,因为我需要将图像文件的输入大小设置为 (224,224,3)。

我正在处理的代码是:

from tensorflow.keras.preprocessing import image
import cv2
import matplotlib.pyplot as plt

img = image.load_img('abc.jpg',target_size=(224,224))
img = image.img_to_array(img)

print(img.shape)
## output : (224,224,3)
img_grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#plt.imshow(img_grey)

th3 = cv2.adaptiveThreshold(img_grey,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
plt.figure(figsize=(20,10))
plt.imshow(th3)
Run Code Online (Sandbox Code Playgroud)
error                                     Traceback (most recent call last)
<ipython-input-88-2a8a27b965ed> in <module>
     17 #plt.imshow(img_grey)
     18 
---> 19 th3 = cv2.adaptiveThreshold(img_grey,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
     20 plt.figure(figsize=(20,10))
     21 plt.imshow(th3)

error: OpenCV(4.1.0) /io/opencv/modules/imgproc/src/thresh.cpp:1627: error: (-215:Assertion failed) src.type() == CV_8UC1 in function 'adaptiveThreshold'
Run Code Online (Sandbox Code Playgroud)

帮助我解决问题。

python opencv adaptive-threshold keras

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

布拉德利自适应阈值算法

我目前正致力于实现一个名为的阈值算法Bradley Adaptive Thresholding.

我一直在主要关注两个链接,以便弄清楚如何实现这个算法.我也成功地实现了另外两种阈值算法,主要是Otsu的方法平衡直方图阈值处理.

以下是我为了创建Bradley Adaptive Thresholding算法而遵循的两个链接.

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.7883&rep=rep1&type=pdf

Bradley自适应阈值Github示例

以下是Python我运行算法并保存图像的源代码部分.我使用Python Imaging Library而不是其他工具来完成我想要做的事情.

def get_bradley_binary(inp_im):
    w, h = inp_im.size
    s, t = (w / 8, 0.15)

    int_im = Image.new('L', (w, h))
    out_im = Image.new('L', (w, h))

    for i in range(w):
        summ = 0
        for j in range(h):
            index = j * w + i

            summ += get_pixel_offs(inp_im, index)

            if i == 0:
                set_pixel_offs(int_im, index, summ)
            else:
                temp = get_pixel_offs(int_im, …
Run Code Online (Sandbox Code Playgroud)

python python-imaging-library adaptive-threshold

10
推荐指数
1
解决办法
4110
查看次数

具有模糊图像的自适应阈值

我正在寻找用于图像二值化的最佳自适应阈值方法.但我对黑暗和模糊的图像有任何问题.
输入图片:
让图片加载......

当我使用自适应阈值方法时,我会收到此
输出图像:
让图片加载......

这对我不好!
那么,有人可以帮我解决这个问题吗?


另一张图片: 在此输入图像描述

并且: 在此输入图像描述

第一个看起来非常糟糕的@ Hammer'solution(我必须选择c通道),第二个我可以使用自适应阈值正常.
所以我想为所有案例找到最佳解决方案.

再次感谢!

opencv adaptive-threshold

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

自适应阈值CIKernel/CIFilter iOS

我已经进行了全面研究,以便找到在iOS上执行自适应阈值处理的内核.不幸的是,我不了解内核语言或其背后的逻辑.下面,我找到了一个执行阈值处理的例程(https://gist.github.com/xhruso00/a3f8a9c8ae7e33b8b23d)

static NSString * const kKernelSource = @"kernel vec4 thresholdKernel(sampler image)\n"
"{\n"
"  float inputThreshold = 0.05;\n"
"  float pass = 1.0;\n"
"  float fail = 0.0;\n"
"  const vec4   vec_Y = vec4( 0.299, 0.587, 0.114, 0.0 );\n"
"  vec4  src = unpremultiply( sample(image, samplerCoord(image)) );\n"
"  float Y = dot( src, vec_Y );\n"
"  src.rgb = vec3( compare( Y - inputThreshold, fail, pass));\n"
"  return premultiply(src);\n"
"}";
Run Code Online (Sandbox Code Playgroud)

是否有可能将其重写为自适应阈值内核?我提供给它的图像已经变成B&W并且已经模糊了.你能指点我的资源吗?我想坚持使用CoreImage,因为我的整个堆栈是围绕它构建的.

编辑:我想要实现的最佳示例/参考已在GPUImage的GPUImageAdaptiveThresholdFilter中实现 - https://github.com/BradLarson/GPUImage/blob/c5f0914152419437869c35e29858773b1a06083c/framework/Source/GPUImageAdaptiveThresholdFilter.m

core-image ios cifilter adaptive-threshold cikernel

8
推荐指数
2
解决办法
2953
查看次数

openCV AdaptiveThreshold与Otsu阈值.投资回报率

我试图使用这两种方法,但似乎自适应阈值似乎给出了更好的结果.我用了

 cvSmooth( temp, dst,CV_GAUSSIAN,9,9, 0);
Run Code Online (Sandbox Code Playgroud)

在原始图像上然后我只使用了阈值.

有没有什么我可以用Otsu方法调整,以使图像更好像自适应阈值?还有一件事,侧面有一些不需要的指纹残留,任何想法我怎么能把它们丢弃?

我从期刊上读到,通过比较自定义方块中白色像素的百分比,我可以获得投资回报率.然而,这种方法要求我有一个阈值,可以使用OTSU方法找到,但我不太确定AdaptiveThresholding.

cvAdaptiveThreshold( temp, dst, 255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,13, 1 );
Run Code Online (Sandbox Code Playgroud)

结果:

原版的自适应

cvThreshold(temp, dst, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
Run Code Online (Sandbox Code Playgroud)

原版的 大津

c++ opencv roi threshold adaptive-threshold

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

在Tesseract OCR中使用了什么阈值(二值化)算法?

我正在开发一个项目,需要准确的OCR结果,用于具有丰富背景的图像.所以我比较两个OCR(其中一个是Tesseract)的结果来做出我的选择.关键是结果受到预处理步骤的强烈影响,尤其是图像二值化.我提取了另一个OCR的二值化图像并将其传递给Tesseract,使Tesseract的结果增强了30-40%.

我有两个问题,你的答案对我有很大帮助:

  1. 什么二值化算法可以使用,它是否可配置?
  2. 有没有办法提取Tesseract OCR的二值化图像,以便我可以测试其他OCR?

提前致谢 :)

ocr tesseract adaptive-threshold

4
推荐指数
2
解决办法
4273
查看次数

如何用颜色实现自适应阈值滤波

我正在寻找一种类似自适应阈值的算法,但它保持颜色.我正在尝试拍这样的图像:

原始图像

并使它看起来像这样:

处理过的图像

如果重要的话,我在ios工作.

image-processing core-image gpuimage imagefilter adaptive-threshold

3
推荐指数
1
解决办法
2164
查看次数

自适应阈值 ---ValueError: 太多值无法解包

我对图像处理非常业余。我可以成功地进行正常阈值处理,但是我在自适应阈值处理中遇到了错误。这是我的代码:

import cv2

import numpy as np

img = cv2.imread("vehicle004.jpg")

img = cv2.medianBlur(img,5)

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

_,th2=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)

cv2.imshow("window2",th2)

cv2.waitKey(0)

cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

错误信息:

line 7, in <module>
    _,th2 = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

python opencv image-processing adaptive-threshold

3
推荐指数
1
解决办法
2784
查看次数

OpenCV二进制自适应阈值OCR

我需要将一些图像转换为二进制文件以进行OCR.

以下是我正在使用的功能:

Mat binarize(Mat & Img, Mat& res, float blocksize, bool inverse)
{
    Img.convertTo(Img,CV_32FC1,1.0/255.0);
    CalcBlockMeanVariance(Img,res, blocksize, inverse);
    res=1.0-res;
    res=Img+res;
    if (inverse) {
        cv::threshold(res,res,0.85,1,cv::THRESH_BINARY_INV);
    } else {
        cv::threshold(res,res,0.85,1,cv::THRESH_BINARY);
    }
    cv::resize(res,res,cv::Size(res.cols/2,res.rows/2));

    return res;
}
Run Code Online (Sandbox Code Playgroud)

地点CalcBlockMeanVariance:

void CalcBlockMeanVariance(Mat& Img,Mat& Res,float blockSide, bool inverse) //21 blockSide - the parameter (set greater for larger font on image)
{
    Mat I;
    Img.convertTo(I,CV_32FC1);
    Res=Mat::zeros(Img.rows/blockSide,Img.cols/blockSide,CV_32FC1);
    Mat inpaintmask;
    Mat patch;
    Mat smallImg;
    Scalar m,s;

    for(int i=0;i<Img.rows-blockSide;i+=blockSide)
    {
        for (int j=0;j<Img.cols-blockSide;j+=blockSide)
        {
            patch=I(Range(i,i+blockSide+1),Range(j,j+blockSide+1));
            cv::meanStdDev(patch,m,s);
            if(s[0]>0.01) // Thresholding parameter …
Run Code Online (Sandbox Code Playgroud)

c++ opencv binary-data adaptive-threshold

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

输出层神经元数

我是人工神经网络的新手,但请帮我解决这个问题?

我正在尝试实现一个用于字符识别的人工神经网络(使用 MLP 和 SNN),我是否需要在输出层中具有与需要识别的字符数相同数量的神经元。例如,如果我希望我的网络能够识别大写字母、小写字母和数字,我是否需要在输出层有 26+26+10 个神经元。

如果我必须识别 Unicode 字符集中的所有字符,我需要输出层中有多少个神经元。

是否有任何方法(动态阈值)来减少这个数字或在输出层动态添加神经元?

如果可能,请提供研究文章的链接。谢谢。

neural-network adaptive-threshold

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