在图像中移动mxn窗口

时间:2016-08-24 03:19:58

标签: matlab image-processing

我有大小为MxN的图像。我现在要做的是我想创建一个步长为图像1/4的窗口mxn,并将图像从左到右,从上到下移动到图像中然后我会计算

的像素密度
pixel density in a window= Number of white pixels/Total Number of pixels

并且对于某些固定像素密度,例如0.45,我会将窗口的中心像素设置为1或0。

我是否可以在matlab中使用一些预定义的函数。

更新

我做了以下努力

function result=imagePixelDensity(Image,window,thresh)
    [WidthI,HeightI]=size(Image);
    [WidthW,HeightW]=size(window);
    totalDensity=WidthW*HeightW;
    stepW=WidhtI/4;
    for r=1:WidthI
        for c=1:HeightI
            if(c+stepW<WidthI && WidhtW+stepW <WidthI)
                Temp=Image(r:HeightW,c+stepW:WidthW+stepW);
                dens=sum(Temp(:))/totalDensity;
                if(dens>=thres)   
                      % donot know what to do here like setting or clearing                   
                       %pixel in a window
                end


                stepW=stepW+WidthW;
            end
        end

    end
end

1 个答案:

答案 0 :(得分:1)

通过设置blockproc的正确值,您可以使用BorderSize的非常简单的函数而不是进入循环。一个例子可能是:

mypxden = @(block_struct) ...
sum(block_struct.data(:))/(size(block_struct.data,1)*size(block_struct.data,2)/4);
I_proc = blockproc(I,[1,1],mypxden,'BorderSize',[round(((size(I,1)/4)-1)/2),round(((size(I,2)/4)-1)/2)],'TrimBorder',false);