我在这里有一张桌子的图像..在右边的列中,背景充满了噪音
如何检测有噪音的区域?我只想对有噪声的部件应用某种滤波器,因为我需要对它进行OCR,任何类型的滤波器都会降低整体识别
什么样的滤镜最好去除图像中的背景噪音?
如上所述,我需要在图像上进行OCR
我想要实时编程用于降噪的软件,就像在具有主动降噪功能的耳机中一样.是否有任何开放的算法,或者至少有关于它的科学论文?Google搜索仅发现有关非实时降噪的信息.
我想在C++接口(cv命名空间)中使用k-means和OpenCV对图像进行分色,我得到了奇怪的结果.我需要它来减少一些噪音.这是我的代码:
#include "cv.h"
#include "highgui.h"
using namespace cv;
int main() {
Mat imageBGR, imageHSV, planeH, planeS, planeV;
imageBGR = imread("fruits.jpg");
imshow("original", imageBGR);
cv::Mat labels, data;
cv::Mat centers(8, 1, CV_32FC1);
imageBGR.convertTo(data, CV_32F);
cv::kmeans(data, 8, labels,
cv::TermCriteria(CV_TERMCRIT_ITER, 10, 1.0),
3, cv::KMEANS_PP_CENTERS, ¢ers);
imshow("posterized hue", data);
data.convertTo(data, CV_32FC3);
waitKey();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个奇怪的结果

第一张图片:原创
第二张图片:k-means之后.
有什么建议?
#include "cv.h"
#include "highgui.h"
#include <iostream>
using namespace cv;
using namespace std;
int main() {
Mat src;
src = imread("fruits.jpg");
imshow("original", src);
blur(src, src, Size(15,15));
imshow("blurred", …Run Code Online (Sandbox Code Playgroud) 这个问题与我之前在stackoverflow 中的Matlab中的图像处理算法有关,我已经得到了我想要的结果.
但现在我面临另一个问题,并在过程图像中获得一些人工制品.在我的原始图像(600张图像的堆栈)中我看不到任何人工制品,请从指甲看原始图像:

但在我的10个处理结果中,我可以看到这些行:

我真的不知道他们来自哪里?
此外,如果它们属于相机的传感器,为什么我不能在原始图像中看到它们?任何的想法?
编辑:
我添加了@Jonas建议的以下代码.它减少了人工制品,但没有完全去除它们.
%averaging of images
im = D{1}(:,:);
for i = 2:100
im = imadd(im,D{i}(:,:));
end
im = im/100;
imshow(im,[]);
for i=1:100
SD{i}(:,:)=imsubtract(D{i}(:,:),im(:,:))
end
Run Code Online (Sandbox Code Playgroud)
@belisarius已经要求提供更多图像,所以我要从我的手指上传4个图像,散斑图案和4个黑色背景图像(1280x1024):

这是黑色背景:

我只使用MATLAB作为计算器,所以我不太熟悉这个程序.我希望一个善良的人可以指导我,因为谷歌目前不是我的朋友.
我wav在下面的链接中有一个文件,其中有人声和背景中的一些噪音.我希望去除噪音.有谁能告诉我如何在MATLAB中做到这一点?
我正在尝试学习如何以尽可能多的方式使用音频.
给定已知音频流(将其称为stream1)和未知音频流(stream2),它们被混合到一个单独的流(mix1)中.
现在假设我们事先知道stream1但不知道stream2是否可以使用stream1从mix1中取消它自己,因此给我们stream2带来最小的噪声/干扰?
为了给它一个真实世界的背景,想象一下你的计算机有一个麦克风和扬声器(不是耳机)的情况,并且因为计算机事先知道(好的,只有几毫秒,但仍然),扬声器的输出是可能的取消麦克风上混音的声音.在这种现实世界的情况下,已知的流不是完全已知的,因为在发送和接收之间可能存在一些失真.
假设这是可能的,有人可以建议阅读有关算法的一些内容吗?
任何人都可以指出我在正确的方向上如何在录制使用iPhone SDK Core Audio讲话的人时最大限度地减少环境噪音?我猜测一个带通滤波器可以消除人类声音范围之上和之下的任何频率.我不知道如何在SDK中实现音频带过滤器.最佳解决方案是在将流写入内存/磁盘之前消除流中的噪声.
我有一些随机行的图片,如下所示:

我想在它们上面应用一些预处理,以消除不必要的噪声(扭曲写入的线条),以便我可以将它们与OCR(Tesseract)一起使用.
我想到的想法是使用扩张来消除噪音,然后使用侵蚀来修复第二步中缺失的部分.
为此,我使用了这段代码:
import cv2
import numpy as np
img = cv2.imread('linee.png', cv2.IMREAD_GRAYSCALE)
kernel = np.ones((5, 5), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
img = cv2.erode(img, kernel, iterations=1)
cv2.imwrite('delatedtest.png', img)
Run Code Online (Sandbox Code Playgroud)
不幸的是,扩张效果不佳,噪声线仍然存在.

我尝试改变内核形状,但情况变得更糟:写入被部分或完全删除.
我还找到了一个答案,说可以删除这些行
将具有两个或更少相邻黑色像素的所有黑色像素转换为白色.
这对我来说似乎有点复杂,因为我是计算机视觉和opencv的初学者.
任何帮助将不胜感激,谢谢.
我遇到了这个相对较老的帖子,描述了Nexus One的噪音消除效果令人印象深刻,我想知道在哪里可以找到有关其在OS软件中实现的更多信息.
特别是:
我正在开展一项雄心勃勃的项目,通过耳机或耳机在Android上实现主动降噪.
我的目标是用Android手机麦克风记录环境噪音,反相(从音频记录中拉出的短值上的简单*-1),并通过耳机播放倒置的波形.如果延迟和幅度接近正确,则应该使环境中的大量机械结构噪声无效.
这是我到目前为止所得到的:
@Override
public void run()
{
Log.i("Audio", "Running Audio Thread");
AudioRecord recorder = null;
AudioTrack track = null;
short[][] buffers = new short[256][160];
int ix = 0;
/*
* Initialize buffer to hold continuously recorded audio data, start recording, and start
* playback.
*/
try
{
int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10);
//NoiseSuppressor ns = NoiseSuppressor.create(recorder.getAudioSessionId());
//ns.setEnabled(true);
track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000,
AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10, AudioTrack.MODE_STREAM);
recorder.startRecording();
track.play();
/*
* Loops until …Run Code Online (Sandbox Code Playgroud) noise-reduction ×10
audio ×4
opencv ×3
algorithm ×2
android ×2
c++ ×2
matlab ×2
audiorecord ×1
core-audio ×1
filter ×1
iphone ×1
k-means ×1
microphone ×1
python ×1
wav ×1