图像的直方图但不考虑前k个像素

时间:2017-02-25 10:46:04

标签: image matlab image-processing histogram

我想创建图像的直方图,但不考虑第一个k像素。

例如:50x70图片和k = 40,直方图是根据最后3460像素计算的。图像的第一个40像素将被忽略。 扫描k像素的顺序是光栅扫描顺序(从左上角开始,按行进行)。

另一个例子就是k=3enter image description here

显然我不能为那些k像素赋值,否则直方图会不正确。 老实说,我不知道如何开始。

我该怎么做? 非常感谢

3 个答案:

答案 0 :(得分:2)

你问题的矢量化解决方案是

var listItems = document.getElementById("my-items").children;

for(var i = 0; i < listItems.length; i++ ) {
  var id = listItems[i].getAttribute("id");
  var cite = document.querySelector("[src='" + id + "']");
  if(cite) cite.innerText = i + 1;
}

如果您在工作目录中使用了该功能,则可以使用

<ol id="my-items">
    <li id="item">ipsum</li>
    <li id="other">lorem</li>
<ol>
<span>The item <cite src="other"></cite> is an item.</span>

尝试一下。

编辑:如果你只是需要图表,你也可以在我写的函数的第4行使用function [trimmedHist]=histKtoEnd(image,k) imageVec=reshape(image.',[],1); % Transform the image into a vector. Note that the image has to be transposed in order to achieve the correct order for your counting imageWithoutKPixels=imageVec(k+1:end); % Create vector without first k pixels trimmedHist=accumarray(imageWithoutKPixels,1); % Create the histogram using accumarray

答案 1 :(得分:1)

其中一种方式可以是:

<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
                    aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand active" href="index.php?p=home">MyPage
                <span id="actualPage">- <?= $pages[$activePage] ?></span></a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
            <ul class="nav navbar-nav">
                ...
            </ul>
        </div>
    </div>
</nav>

如果您需要跳过一些确切数量的顶行,那么您可以跳过昂贵的条件检查,并从适当的索引开始外循环。

答案 2 :(得分:1)

Vec =  image(:).';
Vec = Vec(k+1:end);

Hist = zeros(1, 256); 

for i=0:255
    grayI = (Vec == i);
    Hist(1, i+1) = sum(grayI(:));
end

前两行丢弃前k个像素,因此在计算中不考虑它们。

然后你检查你有多少0并将其保存在数组中。所有灰度等级相同。

在hist矢量中,在第i个单元格中,您将获得灰度级别(i-1)的出现次数。