小编Aru*_*iRC的帖子

Hough变换未检测到突出的线条

在图像上运行Canny边缘检测器后,我得到清晰的线条.但是当在Canny edgemap图像上运行时,Hough线函数似乎在相当突出的线上丢失了.我只保留垂直和水平的Hough线(公差为15度).很多额外的线条出现了,但是没有拾取明确可见的线条限制矩形.

这是片段:

cvCanny( img, canny, 0, 100, 3 );
lines = cvHoughLines2( canny, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 35, 20, 10 );
Run Code Online (Sandbox Code Playgroud)

主要目的是检测表示链表节点的矩形框.但是,square.c示例程序将只检测完美的矩形,而不是箭头触摸矩形边界.

你能否解释一下Hough线功能的变化,这有助于我获得与Canny边缘图像中清晰可见线相对应的线条?

踝关节

opencv image-processing computer-vision visual-c++

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

如何在OpenCV中实现去除斑点?

如果在对比度较差的图像上进行直方图均衡,则其特征变得更加明显.然而,还有大量的谷物/斑点/噪音.使用OpenCV中已有的模糊功能是不可取的 - 我将在稍后对图像进行文本检测,字母将变得无法识别.那么应该应用哪些预处理技术呢?

opencv image-manipulation image-processing

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

blob和连接组件之间有什么区别吗?

在处理图像处理和计算机视觉时,这两个术语常常可以互换 - Blob检测和连接组件标记.

我发现的主要区别是,人们处理视频抓取更多地谈论的斑点,也这与是相当与其周围较浅/较深功能的交易.连接组件(CC)处理共享相同颜色的区域.

然而,从编码和实现的角度来看,这些可以互换使用 - 比如cvFindContours()用于检测"CC"和"blob",本质上意味着同样的事情?或者就此而言,Blobs库可用于CC分析以及blob检测.

opencv image-processing

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

低频抑制图像后如何获得清晰的图像?

我正在抑制Dicrete余弦变换(DCT)域中图像中几个(不相等)块的低DC频率.之后进行逆DCT以仅仅保留高频部分来恢复图像.

  cvConvertScale( img , img_32 ); //8bit to 32bit conversion 
cvMinMaxLoc( img_32, &Min, &Max ); 
cvScale( img_32 , img_32 , 1.0/Max ); //quantization for 32bit 

cvDCT( img_32 , img_dct , CV_DXT_FORWARD ); //DCT 
//display( img_dct, "DCT");

cvSet2D(img_dct, 0,  0, cvScalar(0)); //suppress constant background

//cvConvertScale( img_dct, img_dct, -1, 255 ); //invert colors

cvDCT( img_dct , img_out , CV_DXT_INVERSE ); //IDCT
//display(img_out, "IDCT");
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述 在此输入图像描述

目的是识别和隔离图像中先前检测到的区域中存在于高频中的元素.然而,在一些情况下,文本非常薄且微弱(低对比度).在这些情况下,IDCT生成的图像非常暗,甚至高频部分也变得太微弱,无法进一步分析工作.

有什么操作可以让我们在背景抑制后从IDCT获得更清晰的图像?CvEqualizeHist()发出太大的噪音.

编辑:

整个图片上传为belisarius问.低频抑制不是在整个图像上进行,而是在设置为文本/低频部分周围的最小边界矩形的小ROI上进行.

opencv image-processing computer-vision

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

如何使用JavaCV识别另一个轮廓内的轮廓?

如何识别另一个轮廓内的轮廓?我试图通过许多OpenCV教程,但我无法识别它.请一些专家提供简单的代码来解释一下吗?

这是我的输入文件

在此输入图像描述

这个黑暗的部分是我需要识别的轮廓.

在此输入图像描述

请善意与我分享您的经验.

opencv image-processing javacv

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

如何计算算法的精确复杂度?

如果不采用渐近符号,计算获得算法时间复杂度的唯一方法是乏味的步骤吗?如果没有每行代码的步数,我们可以得到任何程序的大O表示吗?

细节:试图找出几种数值分析算法的复杂性,以确定哪种算法最适合解决特定问题.例如 - 从用于求解方程的Regula-Falsi或Newton-Rhapson方法中,意图是评估每个方法的确切复杂性,然后决定(设置'n'或其他任何参数的值)哪个方法不那么复杂.

algorithm numerical-analysis numerical-methods

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

随机图中的循环数

在8个顶点的无向随机图中,边在一对顶点之间存在的概率为1/2.长度为3的无序循环的预期数量是多少?

这是我想到的方法:

方法1 基本上,长度为3的周期("无序",我假设意味着可以以任何顺序采用顶点)将是三角形.

设顶点数= v,这些周期中没有一个是C

对于n = 3,C = 1

对于n = 4,c = 4.(具有2条对角线的正方形.4个独特的三角形).....

对于n> 3,C(n)=(n-2)+(n-2)(n-3)+(n-4),概括.

这是因为:让我们从外边开始,以三角形作为基础.对于我们选择的第一条边(去掉了2个顶点),有(n-2)个其他顶点来选择第三个三角形点.所以(n-2)在第一学期.

接下来,最后一个术语是因为我们选择以三角形为基础的最后一侧将最左边和最右边的三角形已经被我们选择的第一个边和它的前一个边.

中间项是剩余边数和可能三角形的乘积.

      .--------.

.                   .


.                   .

      .        .
Run Code Online (Sandbox Code Playgroud)

通过上面的8个顶点集,人们可以在视觉上轻松地思考它.(如果需要更好的图表,我将做必要的!).因此对于v = 8,C(8)= 40.因此,边缘的概率是1/2...

方法2 来自n个点的三角形数是nC3,其中C是"组合".但是,预计这些边缘的一半不会存在...

我不确定如何超越这一点.任何正确方向的提示都会很棒.顺便说一句,这不是一个功课问题.

algorithm graph-algorithm

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

在另一个文件中查找一个文件中的行索引

我试图用另一个文件中的位置或行号替换一个文件中的行,其中包含第一个文件的成员的唯一元素。

例如

file1.txt
----------
A
A
A
B
B
C
C
C
Run Code Online (Sandbox Code Playgroud)

第二个文件是

labels.txt
----------
A
B
C
Run Code Online (Sandbox Code Playgroud)

然后我试图获得以下输出:

1
1
1
2
2
3
3
3
Run Code Online (Sandbox Code Playgroud)

我尝试了一些变体grep,但没有任何一个可以正确执行此操作。

获取 labels.txt 中 file1.txt 中每个字母的行号可以正常工作:grep -n A labels.txt或grep -n B labels.txt

但是当我尝试使用这两个文件作为输入时:grep -n file1.txt labels.txt控制台上没有输出。

这在 Python 或其他语言中当然非常简单,但是它的 shell 版本会非常有用。(在从各种数据集的字符串制作分类标签时经常会出现这样的情况,这些标签可用于训练分类模型等。 )。

bash shell

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

使用F#中的System.Collections队列类输入参数错误

尝试运行此处给出的阻塞队列示例.

使用如该示例中所示的.NET Queue类,我收到以下错误:

let queue = new Queue<_>()
Run Code Online (Sandbox Code Playgroud)

"非泛型类型System.Collection.Queue不期望任何类型参数"

如果从队列创建中删除了type参数,则会更改通用性质type BlockingQueueAgent<'T>(maxLength).

除了实现我自己的队列类之外,有没有办法使用示例程序中使用的.NET Queue类?下面给出了整个代码,以防更具说明性.

open System
open System.IO
open System.Collections
//open System.Runtime.Serialization.Formatters.Binary

///defining Agent
type Agent<'T> = MailboxProcessor<'T>

///defining Message
type internal BlockingAgentMessage<'T> = 
  | Get of AsyncReplyChannel<'T>
  | Add of 'T * AsyncReplyChannel<unit> 

/// Agent-based implementation of producer/consumer problem 
type BlockingQueueAgent<'T>(maxLength) =
    let agent = Agent.Start(fun agent ->
        let queue = new Queue<_>()
        //let queue = new Queue()
        // State machine running inside the agent
        let …
Run Code Online (Sandbox Code Playgroud)

.net queue f# visual-studio-2010

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

控制台输入给出虚假值

使用5尝试这个简单的控制台输入后,结果显示为53

printfn "Enter no. of blocks: "
let nBlock = System.Console.Read()
printfn "entered value is %O" nBlock
Run Code Online (Sandbox Code Playgroud)

试图在互动上,仍然得到错误的结果.有解决方案吗?

f# f#-interactive

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