【问题标题】:Using rectangle in Matlab. Using Sum()在 Matlab 中使用矩形。使用总和()
【发布时间】:2013-04-17 03:19:52
【问题描述】:

我对图像执行了 rgb2gray 并在图像上进行了 sobel 边缘检测。 然后做了

faceEdges = faceNoNoise(:,:) > 50;        %binary threshold

因此它将图像(一张人脸的图片)的轮廓设置为黑白。值 1 是白色像素,0 是黑色像素。有人说我可以用这个,

mouthsquare = rectangle('position',[recX-mouthBoxBuffer, recY-mouthBoxBuffer, recXDiff*2+mouthBoxBuffer/2, recYDiff*2+mouthBoxBuffer/2],...   % see the change in coordinates
      'edgecolor','r');
numWhite = sum(sum(mouthsquare));

他说使用两个 sum() 是因为它获取矩形内包含的像素的列和行。 numWhite 总是返回 178 和一些十进制数。

【问题讨论】:

  • 那么,问题是什么? :-)
  • 对不起,它没有返回矩形中有多少白色像素的真实值。有什么方法可以查看矩形中有多少个白色像素?除了在 for 循环中编写一个 for 循环并检查我自己的每个像素并在每次它是一个白色像素时将一个数字加 1 吗?
  • 只是说,也许你编辑你的帖子并在那里添加问题是个好主意。这将增加有人找出解决方案的机会。

标签: matlab sum rectangles


【解决方案1】:

如果您有一个 2D 矩阵 M(这是 -- 例如 -- 一个图像),那么计算有多少元素的值为 1 的方法是:

count_1 = sum(M(:)==1)

或

count_1 = sum(reshape(M,1,[])==1)

如果目标值不是完全 1,但有一个 Δ 阈值,比如说 +/- 0.02,那么应该要求:

count_1_pm02 = sum((M(:)>=0.98) & (M(:)<=1.02))

或使用重塑的等效项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 2015-03-18
    • 2011-07-31
    • 2013-08-08
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多