像素值和图像尺寸

时间:2012-03-12 10:07:21

标签: matlab opencv

对于高度= 17,宽度= 11(图像A)的给定图像,

以下陈述是否相同?

在Matlab中: halfHeight = round(17/2); (答案= 9)

在C ++中: int halfHeight = ceil(17/2); (答案= 9)

对于像素访问,我如何确定我正在访问正确的像素值?

2 个答案:

答案 0 :(得分:1)

如果您进行计算:

17/2=8.5

ceil(x)将计算最接近的整数,该整数大于x

round(x)将计算最接近的整数。但是,89都与8.5接近。所以惯例是在这种情况下它等于9

同样round(1.5)=2round(2.5)=3

答案 1 :(得分:0)

从答案Where is Round() in C++?,我们可以回答这个问题。

然而,在Matlab中它也有明确的定义。 从Mathworks http://www.mathworks.com/help/techdoc/ref/round.html,我们可以看到

  

Y = round(X)将X的元素舍入到最接近的整数。小数部分为0.5的正元素向上舍入到最接近的正整数。具有-0.5的小数部分的负元素向下舍入到最接近的负整数。对于复数X,虚部和实部都是独立舍入的。

当然,我们可以看到

  

B = ceil(A)将A的元素四舍五入到大于或等于A的最接近的整数。对于复数A,虚部和实部被独立舍入。

http://www.mathworks.com/help/techdoc/ref/ceil.html

然后我们可以很容易地知道为什么round(8.5)= 9和ceil(8.5)= 9。