我有大小为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
答案 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);