我在图片上使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<input class="checkboxColumn" name="An" value="9FFF8546C9E9A200F7780550E6A4B6F9610B29D3A" type="checkbox">
<input id="AList" name="AList" value="9FFF8546C9E9A200F710550E6694B6F9610B29D3A|Disabled" type="hidden">
</td>
</tr>
</table>
。
这是输入图像:
这是输出:
以下是我正在使用的代码:
otsu threshold
问题是输出底部和左侧有黑色区域。我该怎么做才能最小化/删除它?
编辑:
我试过了#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
using namespace cv;
int main(int argc, char const *argv[]) {
title("Text Extractor");
string win_name = "textextractor";
Mat img_a;
img_a = imread("../input/test_c.jpg");
Mat img_a_gray;
cvtColor(img_a, img_a_gray, CV_BGR2GRAY);
Mat img_a_blur;
GaussianBlur(img_a_gray, img_a_blur, Size(3, 3), 0, 0);
Mat img_a_thres;
// adaptiveThreshold(img_a_blur, img_a_thres, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 5, 4);
threshold(img_a_blur, img_a_thres, 0, 255, THRESH_OTSU);
namedWindow(win_name + "_a", CV_WINDOW_AUTOSIZE);
imshow(win_name + "_a", img_a_thres);
imwrite("../output/output_a.jpg", img_a_thres);
waitKey(0);
return 0;
}
,我得到了这个:
将尝试将图像分成碎片并单独处理。
对不起,我的不好。前一个是使用自适应过滤。使用equalizeHist()
我得到了这个:
otsu的输出没有变化:/
编辑2:完成了Feng Tan算法,它提供了更好的结果,但是文字没有清晰度。
代码:
Otsu
输出:
答案 0 :(得分:1)
这是我在一些试验和运行后能够获得的。最初我 中位数模糊 原始图像。然后我将 adpative threshold 应用于模糊图像。
这就是我得到的:
<强> 1。使用高斯滤波器的自适应阈值:
<强> 2。使用均值滤波器的自适应阈值:
从这里开始,您可以执行一系列最适合您最终图像的形态学操作。 :)
答案 1 :(得分:0)
您应该尝试使用CLAHE。
我在 MATLAB 上尝试使用:
Ia = imread('FHXTJ.jpg');
I = rgb2gray(Ia);
A = adapthisteq(I, 'clipLimit', 0.02, 'Distribution', 'rayleigh');
注意:您可以对此图像应用阈值处理。大津现在应该工作正常。