gray_dilation_rect


灰度图膨胀。图像的宽度和高度不变。

简单情况


下面创建一个3*3的灰度图,左上角为1,右下角为3,其它为0。
  byte[] barr = new byte[9];
            barr[0] = 1;
            barr[8] = 3;
            var img = WHCSHalCon.Base.CreateByteImage(barr, 3);
            HOperatorSet.GrayDilationRect(img, out img, 2, 2);
            HTuple widht, height;
            HOperatorSet.GetImageSize(img, out widht, out height);
            HObject region;
            HOperatorSet.Threshold(img, out region, 1, 1);
            HTuple rows, cols;
            HOperatorSet.GetRegionPoints(region, out rows, out cols);
            var area = WHCSHalCon.Base.Area(region);
运行结果:
灰度为1的点三个 (0,0),(0,1),(1,0)
        HOperatorSet.Threshold(img, out region, 3, 3);
灰度为3的点四个:(1,1),(1,2),(2,1),(2,2)

覆盖左上?


会不会是右上覆盖左上?
          barr[0] = 3;
            barr[8] = 1;
灰度为3的点四个(0,0) (0,1) (1,1),(1,2)
灰度为1的点三个(1,2) (2,1) (2,2)
中间的点可能被左上角覆盖,也可能被右下角覆盖。

结论及验证


查了官方英文资料,加上自己的测试:
各点的灰度 取 以自己为中中心,宽为maskWidth*2-1,高为ma0skHeight*2-1的矩形内的最大灰度值。
下面来测试。
创建一个5*5的灰度图,中间3*3灰度为0,其它为1。看2*2的坐标灰度是多少?

     byte[] barr = new byte[25];
            for(int i = 0; i < 5; i++ )
            {
                for(int j = 0; j < 5; j++ )
                {
                    barr[5 * i + j] = (0 == i * j * (i - 4) * (j - 4)) ? (byte)1 : (byte)0;
                }
            }
            var img = WHCSHalCon.Base.CreateByteImage(barr, 5);
            HOperatorSet.GrayDilationRect(img, out img, 2, 2);
            HObject regionCenter;
             HOperatorSet.GenRectangle1(out regionCenter, 2, 2, 2, 2);
            HTuple tMean, tmp;
            HOperatorSet.Intensity(regionCenter, img, out tMean, out tmp);
tMean为0
中间3*3任意一格的灰度设置成1,则(2,2)的灰度变成1。
byte[] barr = new byte[25];
            for(int i = 0; i < 5; i++ )
            {
                for(int j = 0; j < 5; j++ )
                {
                    barr[5 * i + j] = (0 == i * j * (i - 4) * (j - 4)) ? (byte)1 : (byte)0;
                }
            }
            barr[5 * 1 + 1] = 1;
            var img = WHCSHalCon.Base.CreateByteImage(barr, 5);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闻缺陷则喜何志丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值