标签: image-processing

检测照片中纸张角落的算法

检测照片中发票/收据/纸张角落的最佳方法是什么?在OCR之前,这将用于后续的透视校正.

我目前的做法是:

RGB>灰色>带阈值的Canny边缘检测>扩张(1)>移除小物体(6)>清除边界物体>根据凸面区域挑选大型博客.> [角落检测 - 未实施]

我不禁想到必须有一种更强大的"智能"/统计方法来处理这种类型的细分.我没有很多训练样例,但我可能会得到100张图像.

更广泛的背景:

我正在使用matlab进行原型设计,并计划在OpenCV和Tesserect-OCR中实现该系统.这是我需要为此特定应用程序解决的许多图像处理问题中的第一个.因此,我希望推出自己的解决方案并重新熟悉图像处理算法.

以下是我想要算法处理的一些示例图像:如果您想接受挑战,那么大图像位于http://madteckhead.com/tmp

案例1 http://madteckhead.com/tmp/IMG_0773_sml.jpg 案例2 http://madteckhead.com/tmp/IMG_0774_sml.jpg 案例3 http://madteckhead.com/tmp/IMG_0775_sml.jpg 案例4 http:/ /madteckhead.com/tmp/IMG_0776_sml.jpg

在最好的情况下,这给出:

案例1 - canny http://madteckhead.com/tmp/IMG_0773_canny.jpg 案例1 - post canny http://madteckhead.com/tmp/IMG_0773_postcanny.jpg 案例1 - 最大的博客http://madteckhead.com/tmp/ IMG_0773_blob.jpg

但是在其他情况下很容易失败:

案例2 - canny http://madteckhead.com/tmp/IMG_0774_canny.jpg 案例2 - post canny http://madteckhead.com/tmp/IMG_0774_postcanny.jpg 案例2 - 最大的博客http://madteckhead.com/tmp/ IMG_0774_blob.jpg

提前感谢所有伟大的想法!我喜欢!

编辑:霍夫变换进展

问:什么算法会聚集霍夫线找到角落?根据答案的建议,我能够使用Hough变换,拾取线条并过滤它们.我目前的做法相当粗糙.我已经假设发票总是小于15度,与图像不对齐.如果是这种情况,我最终得到合理的线条结果(见下文).但我不完全确定一个合适的算法来聚集线(或投票)来推断角落.霍夫线不连续.并且在嘈杂的图像中,可以存在平行线,因此需要与线原点度量的某种形式或距离.有任何想法吗?

案例1 http://madteckhead.com/tmp/IMG_0773_hough.jpg 案例2 http://madteckhead.com/tmp/IMG_0774_hough.jpg 案例3 http://madteckhead.com/tmp/IMG_0775_hough.jpg 案例4 http:/ /madteckhead.com/tmp/IMG_0776_hough.jpg

opencv image-processing edge-detection image-segmentation hough-transform

91
推荐指数
5
解决办法
5万
查看次数

cv2.imshow命令在opencv-python中无法正常工作

我正在使用opencv 2.4.2,python 2.7以下简单代码创建了一个正确名称的窗口,但其内容只是空白而不显示图像:

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
Run Code Online (Sandbox Code Playgroud)

有谁知道这个问题?

python opencv image-processing

91
推荐指数
9
解决办法
14万
查看次数

如何测量两幅图像之间的相似度?

我想比较一个应用程序(可能是一个网页)的屏幕截图与之前拍摄的屏幕截图,以确定应用程序是否正确显示自己.我不想进行完全匹配比较,因为方面可能略有不同(在Web应用程序的情况下,取决于浏览器,某些元素可能位于稍微不同的位置).它应该衡量屏幕截图的相似程度.

是否有图书馆/工具已经做到了?你会如何实现它?

language-agnostic algorithm image image-processing

89
推荐指数
8
解决办法
9万
查看次数

我如何在iPhone上以编程方式为图像着色?

我想用颜色参考着色图像.结果应该类似于Photoshop中的"乘法"混合模式,其中白色将替换为色调:

替代文字

我会不断改变颜色值.

跟进:我会把代码放在我的ImageView的drawRect:方法中,对吗?

与往常一样,代码片段将极大地帮助我理解,而不是链接.

更新:使用Ramin建议的代码对UIImageView进行子类化.

我把它放在viewDidLoad中:我的视图控制器:

[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Run Code Online (Sandbox Code Playgroud)

我看到了图像,但没有被染色.我还尝试加载其他图像,在IB中设置图像,并在我的视图控制器中调用setNeedsDisplay:

更新:drawRect:未被调用.

最后更新:我找到了一个正确设置了imageView的旧项目,所以我可以测试Ramin的代码,它就像一个魅力!

最后的最后更新:

对于那些刚学习Core Graphics的人来说,这是最简单的事情.

在您的子类UIView中:

- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColor(context, CGColorGetComponents([UIColor colorWithRed:0.5 green:0.5 blue:0 alpha:1].CGColor)); // don't make color too saturated

    CGContextFillRect(context, rect); // draw base

    [[UIImage imageNamed:@"someImage.png"] drawInRect: rect blendMode:kCGBlendModeOverlay alpha:1.0]; // draw image
}
Run Code Online (Sandbox Code Playgroud)

cocoa-touch tint image-processing uiimage ios

87
推荐指数
5
解决办法
6万
查看次数

GD与ImageMagick对阵Gmagick为jpg?

我正在放弃GD来操纵我的网站中的图像 - 这太糟糕了.

每个人都说要使用ImageMagick因为它们比GD好,但ImageMagick和Gmagick(瑞士军刀图像处理)怎么样?

Zend在这里有一篇很漂亮的文章http://devzone.zend.com/article/10531谈论它们.

在我离开ImageMagick之前,是否有使用gmagick的动机?

(PHP 5.3+)

编辑:问两个库之间哪个更好有什么问题?我认为这是一个公平的问题.如果有人可以解释一个lib优于另一个的好处,那将有助于我和其他人阅读这个问题.为什么要关闭这样的问题?

编辑2:每个人都在问我需要做什么:我认为这是不经意的:用户上传图像(可能是png/gif/bmp w/e)我需要转换为JPG,然后将其存储在数据库中,最终如果它们是太大我需要调整一下它们.

谢谢

php gd image imagemagick image-processing

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

photoshop如何将两个图像混合在一起?

有人可以解释一下Photoshop如何将两个图像混合在一起,以便我可以在我的应用程序中重现相同的效果.

c c++ photoshop math image-processing

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

图像处理,在Python?

我最近遇到了一个问题,至少需要一个基本程度的图像处理,我可以用Python做到这一点,如果有的话,用什么?

python image-manipulation image image-processing

81
推荐指数
6
解决办法
10万
查看次数

从图像中删除白色背景并使其透明

我们尝试在Mathematica中执行以下操作:
RMagick从图像中删除白色背景并使其透明

但实际照片看起来很糟糕(就像图像周围有光环).

这是我们到目前为止所尝试的:

unground0[img_] := With[{mask = ChanVeseBinarize[img, TargetColor->{1.,1.,1.}]},
  Rasterize[SetAlphaChannel[img, ImageApply[1-#&, mask]], Background->None]]]
Run Code Online (Sandbox Code Playgroud)

这是一个例子.

原始图片:

原始图像

没有背景的白色背景替换图像(或者,为了演示目的,粉红色背景):

透明背景的图像 - 实际上是粉红色的背景,使光环问题变得明显

什么想法摆脱光环?调整像LevelPenalty这样的东西,我只能以丢失一些图像为代价来消除光环.

编辑:所以我可以比较赏金的解决方案,请像上面那样构建你的解决方案,即一个名为unground的自包含函数,它可以获取图像并返回具有透明背景的图像.非常感谢大家!

wolfram-mathematica image image-processing masking

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

如何使用Python找到Wally?

无耻地跳上潮流:-)

灵感来自我如何找到带有Mathematica的Waldo和后续如何找到Waldo with R,作为一个新的python用户,我很想知道如何做到这一点.看起来python比R更适合这个,我们不必像Mathematica或Matlab那样担心许可证.

在下面的例子中,显然只使用条纹是行不通的.如果能够制定一个简单的基于规则的方法来处理诸如此类的困难例子,那将会很有趣.

在沙滩上

我已经添加了[机器学习]标签,因为我认为正确的答案必须使用ML技术,例如Gregory Klopper在原始主题中提倡的Restricted Boltzmann Machine(RBM)方法.python中有一些RBM代码可能是一个很好的起点,但显然需要训练数据.

2009年IEEE国际信号处理机器学研讨会(MLSP 2009)上,他们举办了数据分析竞赛:Wally在哪里?.训练数据以matlab格式提供.请注意,该网站上的链接已经死亡,但是数据(以及Sean McLoone及其同事采用的方法的来源可以在这里找到(参见SCM链接).看起来像是一个开始的地方.

python machine-learning image-processing computer-vision

81
推荐指数
1
解决办法
1万
查看次数

合并两个图像

我需要在Java中合并两个图像(BufferedImage).如果没有透明度,这不会是一个问题.基本图像已经具有一定的透明度.我希望保持原样并对其应用"掩码",即第二张图像.第二个图像没有不透明像素,实际上它几乎完全透明,只是有一些不太透明的像素来提供某种"光效",就像反射一样.重要细节:我不想在屏幕上执行此操作,使用图形,我需要获得带有合并的BufferedImage.

谁能帮我?谢谢!

细节:合并两个保持透明度的图像.这就是我需要做的.

注意:Java中的Set BufferedImage alpha掩码不能满足我的要求,因为它不能很好地处理具有透明度的两个图像 - 它会修改第一个图像透明度.

java transparency alpha image-processing

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