小编com*_*eye的帖子

绘图和绘画机器人的算法 - 任何提示?

绘图和绘画机器人的算法 -

你好

我想编写一个分析图像的软件,然后使用最少的不同颜色和不透明度的bezier路径对象生成一个图像,该图像捕获人眼在原始图像中感知的内容.

与最近的推特超级压缩比赛(参见:stackoverflow.com/questions/891643/twitter-image-encoding-challenge)不同,我的目标不是创建一个忠实于图像的复制品,而是复制人类的体验.看着这个形象.

例如,如果原始图像在左上角显示一个红色气球,并且再现在左上角看起来像一个红色气球,那么我将实现我的目标,即使再现中的气球是不是在相同的位置,并没有完全相同的大小或颜色.

当我说"被人类感知"时,我的意思是非常有限.我不是试图分析图像的意义,我不需要知道图像是什么,我只对人眼会注意到的关键视觉特征感兴趣,只要这可以通过算法无法概念化实际观察的内容.

为什么这种不同的人类感知标准超过了摄影的准确性?

该软件将用于驱动绘画机器人,它会与人的艺术家进行合作(见:video.google.com/videosearch?q=mr%20squiggle).

算法应该寻求将画布上已经存在的内容合并到最终图像中,而不是将人类制作的标记视为不完美的错误.

因此,相对亮度,色调,饱和度,大小和位置比照片上与原始相同更重要.保持特征的拓扑结构,颜色块,渐变,凸凹曲线对于这些特征的确切尺寸形状和颜色将更为重要

还在我这儿?

我的问题是,我从"当你有一把锤子看起来像钉子"综合症时会受到一点点痛苦.对我来说,似乎这样做的方法是使用遗传算法的东西,如小波变换的比较(见:grail.cs.washington.edu/projects/query/)由retrievr使用(参见:labs.systemone.at/ retrievevr /)选择合适的解决方案.

但我认为这是答案的主要原因是,这些是我所知道的技术,可能有更优雅的解决方案使用我现在没有任何关于的技术.

考虑到人类视觉系统分析图像的方式会特别有趣,因此可能需要特别注意直线,角度,高对比度边框和相似颜色的大块.

您对视觉,图像算法,遗传算法或类似项目应该阅读的内容有什么建议吗?

谢谢

PS.上面的一些拼写可能对你和你的拼写检查有误.这只是国际拼写变化,可能与您所在国家/地区的标准不同:例如澳大利亚标准:颜色与美国标准:颜色

robotics artificial-intelligence image-processing computer-vision

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

Objective-C运行循环停止并重新启动方法?

我曾经认为我是一个相当聪明的人.
苹果的"线程编程指南",打破了我自我欺骗的自我.

我有一个方法我想在辅助线程上重复运行,在下面的示例中我称之为doStuff:
我希望能够重复停止并重新启动此方法的重复调用.

代码启动线程.
如果布尔值stuffToDo为true,
则调用doStuff:
否则
它会有一点休息.
然后它再次循环,直到我告诉它停止

我现在的代码看起来很浪费,因为即使没有任何事情可做,它仍然会检查'stuffToDo'.

我可以摆脱stuffToDo,只是产生并根据需要取消线程.
这看起来也很浪费,这意味着当我已经有一个运行时,我需要注意不要意外地产生一个新线程.

我确信有效解决我的困境的答案可以在Apple的"线程编程指南"的"运行循环管理"部分找到,
也许它涉及自定义输入源

但我真的觉得这个文件具有挑战性.
就好像这个文档在我的大脑中产生了太多的线程并且计算停止了.

enum eRenderThreadMode
{
    render_not_started,
    render_run,
    render_cancel,
    render_finished
};


- (IBAction) startThread:(id)sender
{
    self.renderThreadMode = render_run;
    label.text = @"doing stuff"; 
    [NSThread detachNewThreadSelector:@selector(keepDoingStuff)  toTarget:self withObject:nil];

}

- (void)keepDoingStuff
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    while (renderThreadMode == render_run) 
    {
        if(stuffToDo)
        {
            [self doStuff];
        }
        else
        {
            [NSThread sleepForTimeInterval:kLittleRest];
        }
    }
    self.renderThreadMode = render_finished;
    [pool release];
}


- (IBAction)stopThread:(id)sender
{
    self.renderThreadMode = render_stop;

    while …
Run Code Online (Sandbox Code Playgroud)

iphone multithreading objective-c

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

有没有任何教程可以帮助熟练的c ++程序员学习c?

我成为了面向对象代码时代的专业程序员,并且拥有多年用C++编程的经验.我经常处理具有多年遗留代码的大型项目,这些代码混合了c ++和c.我觉得在纯c部分系统上工作不太舒服.从C++编程我理解所有的c语法,但是我知道如何组织一个没有对象的复杂c程序,以及构成我想要填充的内存的最佳实践.我作为一个java程序员工作后学习了c ++,并且认为更多的c会让我成为一个更好的c ++程序员,并且将一点点的java翻译成c ++程序员

c c++

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

是否有任何样式指南建议或约定格式化复杂的布尔逻辑?

我参与了一个涉及复杂布尔逻辑的项目.这种复杂性使代码非常有效,但遗憾的是难以阅读.

因此,我们将逻辑排列如下,这使得更容易在复合语句中查看组,并且还可以向逻辑的某些部分添加注释.

(这段代码不是来自项目的真实代码,真正的逻辑更复杂)

if  (
        //comments here!            
        angle.angle < kQuiteLow 

     && (
            previousAngle.angle > kQuiteHigh
         || previousAngle.time == kUnknownTime
        )

        //comments in here too!         
     && pairedAngle.angle < kQuiteLow 

     && (
            //and here
            previousPairedAngle.angle > kQuiteHigh
         || previousPairedAngle.time == kUnknownTime
        )
    )
Run Code Online (Sandbox Code Playgroud)

你有没有见过这在其他任何地方完成?

关于如何布置非常复杂的布尔逻辑,是否有任何约定或样式指南建议?

coding-style

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

如何对现有的 apache 托管 cgi 应用程序实施 RESTful api?

我被要求实现一个 RESTful API 来调用旧 Web 应用程序的功能。

\n\n
\n Web 服务器应用程序服务器\n \xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\xe2 \x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94 \x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82apache\xe2\x94 \x82 \xe2\x94\x82apache \xe2\x94\x82\n \xe2\x94\x82httpd \xe2\x94\x82 \xe2\x94\x82httpd \xe2\x94\x82\n \xe2\x94\x82 \xe2 \x94\x82 \xe2\x94\x82 \xe2\x94\x82\n请求 \xe2\x94\x82 \xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2 \x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94 \x80\xe2\x94\x90 \xe2\x94\x82 \xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2 \x94\x90\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94 \x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94 \x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80\xe2\x94\x82\xe2\x94\x80 \xe2\x94\xbc \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80\xe2\x94\x82\xe2\x94\x80 \xe2 \x94\x80 \xe2\x94\xbc \xe2\x94\xbc \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94 \x80 \xe2\x94\xbc \xe2\x94\x80 \xe2\x96\xb6\xe2\x94\x82 c++ \xe2\x94\x82\n \xe2\x94\x82 \xe2\x94\x82 mod_proxy \xe2 \x94\x82 \xe2\x94\x82 \xe2\x94\x82 mod_fcgid \xe2\x94\x82 \xe2\x94\x82 应用程序 \xe2\x94\x82\n\xe2\x97\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 \xe2\x94\x80 …

apache rest cgi

5
推荐指数
0
解决办法
3742
查看次数

何时释放NSThread是否安全?

下面是我的辅助NSThread*processThread的runloop

关闭我打电话的主题

//cancel secondary thread
[processThread cancel]
//signal condition
[processCondition broadcast];
Run Code Online (Sandbox Code Playgroud)

然后可以安全地打电话:

[processCondition release];
[processThread release];
Run Code Online (Sandbox Code Playgroud)

或者我需要确定线程已完成?

也许是这样的?

NSTimeInterval timeout = [NSDate timeIntervalSinceReferenceDate] + (1.0/15.0);

while ([processThread isExecuting] && [NSDate timeIntervalSinceReferenceDate] < timeout)
{
    [NSThread sleepForTimeInterval: 1.0/1000.0 ];
}

[processCondition release];
[processThread release];
Run Code Online (Sandbox Code Playgroud)




详细代码和说明:

- (void)processLoop
{
    NSAutoreleasePool * outerPool = [[NSAutoreleasePool alloc] init];
    [processCondition lock];

    //outer loop    
    //this loop runs until my application exits
    while (![[NSThread currentThread] isCancelled])    
    {
        NSAutoreleasePool *middlePool = [[NSAutoreleasePool alloc];
        if(processGo)
        {
            //inner loop
            //this …
Run Code Online (Sandbox Code Playgroud)

iphone multithreading objective-c

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

应该在错误跟踪系统中的信息最终会丢失在某处的电子邮件中.该怎么办?

我是一家小公司的开发商,即将承担一个大型项目.
我们目前使用电子邮件进行问题跟踪,我打算设置一个bug /问题跟踪系统
(可能是bug genie,mantis或trac - 我们想要一些基于web的,php,开源,mysql)
我们有源代码控制(SVN)

在过去,我发现错误跟踪系统的最大问题是信息在跟踪系统和电子邮件之间分配.

您如何确保人们可以查看电子邮件中的信息,以查看错误跟踪软件中的错误?

您如何才能让处理bug的人们轻松地将他们发送和接收的电子邮件中的信息提供给错误跟踪系统?
在我的经验中,如果不容易,人们会避免这样做.

email bug-tracking email-integration issue-tracking

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

辅助NSThread runloop中需要自动释放池的位置在哪里?

我的应用程序的辅助线程的运行循环如下.它有一个嵌套的控制循环.

  • 外循环在应用程序的持续时间内运行
  • 内部循环在一个视图打开时运行,然后线程在视图未打开时等待.
  • 穿过内环很短,只有几分之一秒.

我的代码不会故意在未发布的池中留下任何自动释放的对象,但我不知道操作系统在做什么.

在主线程中,cocoa围绕运行循环的每次传递包装自动释放池.
在这个辅助线程中,我相信最接近的等价物是通过内部循环.

所述自动释放池包装每次通过内循环.

中间的水池环绕的内循环,使创建并自动释放在这个级别的对象不会保持,直到应用程序终止.

泳池包装整个runloop.

如何确定所有这些池的创建和发布对我的代码速度有何影响.
如何确定所有三个池是否必要或过度杀伤?




代码和解释:

- (void)processLoop
{

    NSAutoreleasePool * outerPool = [[NSAutoreleasePool alloc] init];
    [processCondition lock];

    //outer loop    
    //this loop runs until my application exits
    while (![[NSThread currentThread] isCancelled])    
    {
        NSAutoreleasePool *middlePool = [[NSAutoreleasePool alloc];
        if(processGo)
        {
            //inner loop
            //this loop runs typically for a few seconds
            while (processGo && ![[NSThread currentThread] isCancelled]) 
            {
                NSAutoreleasePool *innerPool = [[NSAutoreleasePool alloc]; init];
                //within inner loop
                //this takes …
Run Code Online (Sandbox Code Playgroud)

iphone multithreading objective-c autorelease

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