分享

halcon算子region

 行走在理想边缘 2018-01-21
region_to_bin — Convert a region into a binary byte-image.
这个算子是将图像的一个区域转换为二值图,
region_to_bin(Region : BinImage : ForegroundGray, BackgroundGray, Width, Height : )

    输入区域,输出区域,前景的像素值,背景的像素值,图片的宽度,图片的高度
该算子的主要目的是去除所有外围干扰区域,将其填充为像素0,其他区域填充为255.

read_image (Image, 'C:/Users/934554314/Desktop/TB/c2fdfc039245d688c56332adacc27d1ed21b2451.jpg')
rgb1_to_gray (Image, GrayImage)
get_image_size (GrayImage, Width, Height)
threshold (GrayImage, Region, 0, 50)

region_to_bin (Region, BinImage, 255, 0, Width, Height)










用opencv实现halcon上述算子相同功能:

int main(int argc, char *argv[])
{
Mat imageSource = imread("C:\\Users\\934554314\\Desktop\\TB\\c2fdfc039245d688c56332adacc27d1ed21b2451.jpg", 1);
imshow("Source Image", imageSource);
Mat imageGray;
cvtColor(imageSource, imageGray, CV_BGR2GRAY);
imshow("imageGray", imageGray);
Mat imageThreshold;
threshold(imageGray, imageThreshold, 50, 255,1);
imshow("Threshold Image", imageThreshold);
waitKey(0);
return 0;
}






由对比可知,由halcon处理所得图片和用opencv处理的照片得到的结果是一样的。

这里我们重点介绍一下opencv算子threshold。

threshold进行阈值分割时总共有5中可选择的类型,

THRESH_BINARY:在运用该阈值类型的时候,先要选定一个特定的阈值量,比如:125,这样,新的阈值产生规则可以解释为大于125的像素点的灰度值设定为最大值(如8位灰度值最大为255),灰度值小于125的像素点的灰度值设定为0。

THRESH_BINARY_INV:该阈值化与二进制阈值化相似,先选定一个特定的灰度值作为阈值,不过最后的设定值相反。(在8位灰度图中,例如大于阈值的设定为0,而小于该阈值的设定为255)

THRESH_TRUNC:同样首先需要选定一个阈值,图像中大于该阈值的像素点被设定为该阈值,小于该阈值的保持不变。(例如:阈值选取为125,那小于125的阈值不改变,大于125的灰度值(230)的像素点就设定为该阈值)。

CV_THRESH_TOZERO:先选定一个阈值,然后对图像做如下处理:1 像素点的灰度值大于该阈值的不进行任何改变;2 像素点的灰度值小于该阈值的,其灰度值全部变为0。

CV_THRESH_TOZERO_INV:原理类似于0阈值,但是在对图像做处理的时候相反,即:像素点的灰度值小于该阈值的不进行任何改变,而大于该阈值的部分,其灰度值全部变为0。

  /* 0: 二进制阈值
     1: 反二进制阈值
     2: 截断阈值
     3: 0阈值
     4: 反0阈值
   */

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多