小编end*_*ith的帖子

绘图数字化 - 从图形图像中抓取样本值

这不是真正的"OCR",因为它不能识别字符,但它适用于曲线.有人知道图像处理库或已建立的算法,用于从(光栅)绘图图像中检索值吗?例如,在这张图中,我很难用眼睛读取确切的值,因为网格线之间存在这样的间隙:

替代文字http://i35.tinypic.com/316airl.jpg

我可以使用直边或其他任何东西,但它仍然容易出错.如果有软件只能截取任何旧图的屏幕截图并自动将其转换为值表或可查询的函数,那将是很棒的.

似乎被称为"曲线识别"?也可用于从未发布基础数据的科学论文中的曲线中提取数据.

并且可以获得一些人为指导.例如,没有理由OCR无法读取"100"并将其与线匹配,但是在机器相对于网格线提取曲线的路径之后,让人类给出线数值是可以的.我最感兴趣的是跟踪曲线相对于网格的功能,即使网格以非仿射方式倾斜,旋转或扭曲.

更新:

现在有一篇维基百科文章称为将扫描图转换为数据,链接中有一堆软件.另外一些软件在alternativeto.net上.我想这个理论现在属于http://dsp.stackexchange.com,而软件解决方案属于http://superuser.com

ocr charts plot image-processing curve-fitting

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

Bessel函数在Python中与大指数一起使用

我有一些代码使用了修改后的第一和第二阶贝塞尔函数(iv和kv).令人讨厌的是,他们似乎有限制,那些是iv(0,713)和kv(0,697),每个加一个,你得到无穷大和0.这对我来说是个问题,因为我需要使用高于此值的值,通常高达2000或更高.当我试图除以这些时,我最终潜水0或无穷大,这意味着我要么得到错误或零,这两者都不是我想要的.

我正在使用scipy bessel函数,是否有更好的函数可以处理更小和更大的数字,或者修改Python以使用这些大数字的方法.我不确定这里真正的问题是为什么Python不能超过700这些工作,是函数还是Python?

我不知道Python是否已经在做,但我只需要前5-10位*10 ^ x,例如; 也就是说我不需要全部1000位数,也许这就是与Wolfram Alpha如何解决这个问题相比,Python的工作原理是什么?

python scipy bessel-functions

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

识别常见的周期波形(方波,正弦波,锯齿波......)

在没有任何用户交互的情况下,程序如何识别来自ADC的记录中存在哪种类型的波形?

为了这个问题:恒定频率的三角形,正方形,正弦波,半正弦波或锯齿波.电平和频率是任意的,它们会产生噪音,少量失真和其他缺陷.

各种波形

我也会提出一些(天真的)想法,你可以上下投票.

audio numerical waveform signal-processing

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

使用Hough变换进行椭圆检测

使用Hough变换,如何在2D空间中检测并获取椭圆的(x0,y0)和"a"和"b"的坐标?

这是ellipse01.bmp:

椭圆图像

I = imread('ellipse01.bmp');
[m n] = size(I);
c=0;
for i=1:m
    for j=1:n
        if I(i,j)==1
        c=c+1;
        p(c,1)=i;
        p(c,2)=j;
        end
    end
end
Edges=transpose(p);
Size_Ellipse = size(Edges);
B = 1:ceil(Size_Ellipse(1)/2);
Acc = zeros(length(B),1);
a1=0;a2=0;b1=0;b2=0;
Ellipse_Minor=[];Ellipse_Major=[];Ellipse_X0 = [];Ellipse_Y0 = [];
Global_Threshold = ceil(Size_Ellipse(2)/6);%Used for Major Axis Comparison
Local_Threshold = ceil(Size_Ellipse(1)/25);%Used for Minor Axis Comparison
[Y,X]=find(Edges);
Limit=numel(Y);
Thresh = 150;
Para=[];

for Count_01 =1:(Limit-1)
  for Count_02 =(Count_01+1):Limit
    if ((Count_02>Limit) || (Count_01>Limit))
      continue
    end
    a1=Y(Count_01);b1=X(Count_01);
    a2=Y(Count_02);b2=X(Count_02);
    Dist_01 = (sqrt((a1-a2)^2+(b1-b2)^2));
    if (Dist_01 >Global_Threshold)
      Center_X0 = …
Run Code Online (Sandbox Code Playgroud)

algorithm matlab hough-transform

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

将多声道PyAudio转换为NumPy数组

我能找到的所有例子都是单声道的CHANNELS = 1.如何使用PyAudio中的回调方法读取立体声或多声道输入并将其转换为2D NumPy数组或多个1D数组?

对于单声道输入,这样的工作:

def callback(in_data, frame_count, time_info, status):
    global result
    global result_waiting

    if in_data:
        result = np.fromstring(in_data, dtype=np.float32)
        result_waiting = True
    else:
        print('no input')

    return None, pyaudio.paContinue

stream = p.open(format=pyaudio.paFloat32,
                channels=1,
                rate=fs,
                output=False,
                input=True,
                frames_per_buffer=fs,
                stream_callback=callback)
Run Code Online (Sandbox Code Playgroud)

但是对于立体声输入不起作用,result阵列是两倍长,所以我假设通道是交错的或者其他东西,但我找不到这方面的文档.

python numpy pyaudio

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

C内联函数和"未定义外部"错误

我正在尝试用内联函数替换一些宏子程序,因此编译器可以优化它们,因此调试器可以进入它们,等等.如果我将它们定义为普通函数,它可以工作:

void do_something(void)
{
  blah;
}

void main(void)
{
  do_something();
}
Run Code Online (Sandbox Code Playgroud)

但如果我将它们定义为内联:

inline void do_something(void)
{
  blah;
}

void main(void)
{
  do_something();
}
Run Code Online (Sandbox Code Playgroud)

它说"错误:未定义的外部".那是什么意思?在黑暗中刺了一下,我试过了

static inline void do_something(void)
{
  blah;
}

void main(void)
{
  do_something();
}
Run Code Online (Sandbox Code Playgroud)

没有更多的错误.函数定义和对函数的调用都在同一个.c文件中.

有人可以解释为什么一个有效,另一个没有?

(第二个相关问题:如果我想在多个.c文件中使用它们,我在哪里放入内联函数?)

c external inline-functions

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

使用scipy.optimize快速找到函数等于0的第一个点

基本上,给定一个函数可以为不同的参数生成这样的输出:

在此输入图像描述

我想快速找到函数等于0的第一个x.因此,使用在x上产生蓝色曲线的参数,我想找到x = 134.对于绿色曲线,我想找到x = 56等.

认为该函数将始终单调递减,直到它达到零,但我不完全确定.

该功能不一定单调递减.

肯定,它将只命中0一次,然后保持为零.

目前我通过迭代x值直到我达到零来强制它,但我想要一些更好的做出有根据的猜测(基于斜率?)和迭代.

理想我想使用的东西已经出炉(因为90%的程序员甚至不能正确地写一个二进制搜索),像一些scipy.optimize,但似乎这些都希望找到无论是全球最低或零交叉.

(此功能排序RGB立方体的用于左声道的颜色空间中的给定色度distance_to_the_wall(所以基本上构建"三立夹到RGB"功能)的,但由于IRGB和LCh中之间的映射可以通过库,并与等参数而变化我认为最好只尝试几个值,直到找到正确的值,而不是试图直接反向计算值?)

python mathematical-optimization minimization scipy

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

从程序中使用Python的`timeit`,但其功能与命令行相同?

例如,文档说:

但请注意,只有在使用命令行界面时,timeit才会自动确定重复次数.

有没有办法从Python脚本中调用它并自动确定重复次数,只返回最短的数字?

python timeit

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

pandas resample interpolate正在生成NaNs

从此示例修改:

import io
import pandas as pd
import matplotlib.pyplot as plt

data = io.StringIO('''\
Values
1992-08-27 07:46:48,1
1992-08-27 08:00:48,2
1992-08-27 08:33:48,4
1992-08-27 08:43:48,3
1992-08-27 08:48:48,1
1992-08-27 08:51:48,5
1992-08-27 08:53:48,4
1992-08-27 08:56:48,2
1992-08-27 09:03:48,1
''')
s = pd.read_csv(data, squeeze=True)
s.index = pd.to_datetime(s.index)

res = s.resample('4s').interpolate('linear')
print(res)
plt.plot(res, '.-')
plt.plot(s, 'o')
plt.grid(True)
Run Code Online (Sandbox Code Playgroud)

它按预期工作:

1992-08-27 07:46:48    1.000000
1992-08-27 07:46:52    1.004762
1992-08-27 07:46:56    1.009524
1992-08-27 07:47:00    1.014286
1992-08-27 07:47:04    1.019048
1992-08-27 07:47:08    1.023810
1992-08-27 07:47:12    1.028571
....
Run Code Online (Sandbox Code Playgroud)

内插值

但如果我将重新采样更改为'5s',它只生成NaN:

1992-08-27 07:46:45 …
Run Code Online (Sandbox Code Playgroud)

python interpolation pandas

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

如何在不根据原始数据计算的情况下绘制宽度不等的直方图?

Matplotlibhist说“计算并绘制 x 的直方图”。我想在不先计算任何东西的情况下制作一个情节。我有 bin 宽度(不相等)和每个 bin 中的总量,我想绘制频率-数量直方图。

例如,随着数据

cm      Frequency
65-75   2
75-80   7
80-90   21
90-105  15
105-110 12
Run Code Online (Sandbox Code Playgroud)

它应该是这样的情节:

直方图

http://www.gcsemathstutor.com/histograms.php

其中块的面积代表每个类别的频率。

matplotlib histogram

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