2013-10-14 39 views
-1

我试图创建一个算法,给定一组网站中的元素,它将返回更可能是描述产品的“一个”元素的算法。根据矩形大小对图像进行评分的算法

这当然不是一个100%准确的算法,并需要以人为本的选择之后,但我想获得至少3幅最可能的图像列表。这是我做的,到目前为止:

1 - 摆脱其平方大小比50x50px
2小 - 在页面
3计算所有的平均平方大小 - 给出分数每个取决于与平均平方尺寸的差异(平方尺寸越大,得分越高)
4 - 如果宽度>比(高度* 5),得分=得分* 0.5(我这样做是因为这可能是一个横幅这一页)。

这里是我想改变什么,但我看不出这将是这样做的一个很好的方式。在步骤3,我现在所做的权利赋予以下分数:

score_of_image = average_square_size - square_size_image 

我想有将被共享出来给所有取决于它们的大小分的特定量。份额应该反映一张与其他图片相关的图片的大小。为了分享这些观点,什么是一个好的算法?

+1

困惑!...你是在谈论一个简单的面积计算还是你在谈论图像的平方?我假设你是试图写一些蜘蛛类型算法来收集有关产品的网站信息,我会想到一个简单的面积计算d给出了“产品”形象的最佳标志。我不确定你为什么试图将它转换成分数? –

+1

什么是“元素”?它是一个位图图像?什么是“方形尺寸”?是位图图像的尺寸(宽度乘以高度)?你的观点(4)有一些错误的语法,但它对我来说似乎是错误的...一个不错的方形图像的宽度>高度* 0.5,所以我不会惩罚它。如果宽度>高度* 2,我可能会惩罚图像,这是非常不同的。 –

+0

我想在第3步中你想要一个百分比的差异。所以使用像'image_score = square_size_image/average_square_size'。因此,比平均值大的图像的分数大于1.0。 –

回答

1

我认为你需要决定某些方面有多么重要与问候他人,但你可以简单地计算图像(宽x高)的尺寸和使用,作为分数的第一部分。我如何得分会记录页面上最大图像的面积,并将其他值作为其中的一部分。我不认为平均图像大小确实增加了任何东西,因为我可以想象最大的图像最有可能是产品图像。

然后计算为方形的独立评分,做这样的事情: -

if (height > width) { 
    result = (width/height) * max_points_for_squareness; 
} else { 
    result = (height/width) * max_points_for_squareness; 
} 

所以这两个方面之间,你得到的是可以用来分发但是总比分你希望两个百分比(你可以如果你愿意的话可以指定更多的点数,或者更多的指向图像大小

+0

良好的方法和指导。但我有个问题。为什么要将所有图像(百分比)与最大图像进行比较? –

+0

为了获得百分比分数。所以你需要计算出哪个是最大的图像,然后将每个较小的图像尺寸除以较大的图像尺寸,然后* 100给出该百分比。这样,您始终可以使用一致的范围(0-100),并且可以让您在整个页面上分配确切数量的点,并将图像大小的得分与矩形的得分相关联。尽管如此,你不必使用100,如果你想要对图像大小有偏差,你可以使用更高的数字作为乘数。 –

相关问题