我试图找到右边,右上角,右下角没有黑色像素邻居的黑色像素数。
mask1 = [0|1 0|1 0; 0|1 0|1 0; 0|1 0|1 0];
black = double (x28462847_1_1 < 128);
result = conv2 (black, mask1, 'same');
count = sum (result(:) == 1)
我尝试使用这个面具。有谁知道我哪里出错了
答案 0 :(得分:1)
我认为最好的方法是:
notblack=black>0; %if its not zero, then its not black
mask=[0 1 0; 1 0 1; 0 1 0]% or mask=[0 0 1; 0 0 1; 0 0 1]; in your case.
result = conv2(double(notblack),mask, 'same'); % sum all values
count=sum(result(:)==sum(mask(:)));
答案 1 :(得分:1)
要检测在其3个(上/下)右像素中没有黑色像素的所有黑色像素(1),您可以使用以下蒙版计算互相关:
mask = [0 0 -1;
0 1 -1;
0 0 -1];
对于所需的位置,结果将是1
,对于其他位置,结果将更小。
result = conv2 (double(black), rot90(mask,2), 'same') == 1; % Note that I used `conv2` with `rot90` to calculate the cross correlation.
count = sum (result(:)); % count the number of desired elements
示例强>
对于以下图片
rng('default')
black = rand(10) > 0.8;
我获得了以下结果:
figure
imshow(~black, 'InitialMagnification','fit')
hold on
[x, y] = find(result);
plot(y, x, '*') % highlight the found positions with an asterisk