6. OpenCV--ROI 与 泛洪填充

目录:



ROI(region of interest),中文翻译过来就是感兴趣区域,在机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,这一部分区域被我们称之为感兴趣区域。

ROI选定的这个区域一般是我们所关注的重点,圈定该区域后我们可以进行进一步的处理,在一定程度上可以减少工作量。

ROI主要应用在视频监控领域,最常见的为ROI智能视频编码技术,具有ROI功能的摄像机可以让用户选择画面中感兴趣的区域,启用ROI功能后,重要的或者移动的区域将会进行高质量无损编码, 而对那些不移动,不被选择的区域降低其码率和图像质量,进行标准清晰度视频压缩,甚至是不传输这部分区域视频,达到节省网络带宽占用和视频存储空间。

图像处理------泛洪填充算法(Flood Fill Algorithm) 油漆桶功能

它可以填充由一个点开始进行迭代或者递归,来寻找或者填充和它相同或者相同值的点,或者找到边界上和它不同的点为止。

泛洪填充用途很多,图形对象的自动填充技术等等。在平面上画一个长方形,每次点油漆桶,只会改变该长方形内颜色,这就是泛洪填充。


6.1 ROI

总结:1. 提取ROI方法:numpy的array来提取(只能是方形的?)

比如在蓝色区域内我们感兴趣的区域就是虚线的矩形。

比如在lena图片里面,我们想扣下来lena的脸,我们需要设置好高和宽(自己量。。)自己在图上面量。

扣出ROI后我们可以进行我们喜欢的操作。

对lena 的脸提取ROI后修改再接回去:

1.通过 [] 选择要提取的ROI部分

2.对提取的ROI部分做处理。比如我们把它转化为灰度图

3.想把修改后的ROI接回去,若是灰度图一定要先转为RGB图,因为通道数不一样,接回去会报错!!!

4.gray 转换为 RGB

5.RGB接回原图


6.2 mask和提取不规则ROI

mask(遮罩),OpenCV中是如此定义Mask的:八位单通道的Mat对象,每个像素点值为零或者非零区域。当Mask对象添加到图像区上时,只有非零的区域是可见,Mask中所有像素值为零与图像重叠的区域就会不可见,也就是说Mask区域的形状与大小直接决定了你看到最终图像的大小与形状。一个具体的示例如下:

通过mask 来提取不规则的ROI,需要调用的API是bitwise_and。

比如 提取红色花朵这个不规则的ROI:

两种方法:(这里主要讨论常用的)

通过cv.inRange 并查表,剥离出颜色,然后bitwise_and(img,img,mask = mask_name)

mask_img = cv2.inRange(hsv, lower_blue, upper_blue)

bitwise_and(img,img,mask = mask_name)


6.3 cv.floodFill()

6.3.1 彩色图像填充

复制一张图(不想在原图上面动):?= image.copy()

开始准备mask:先准备一个模板

h,w = image.shape[:2]

mask = np.zeros([h+2, w+2], np.unit8)

开始渲染,用mask去渲染它:floodFill(image, mask, seedPoint, newVal[, loDiff[, upDiff[, flags]]])

floodFill(image, mask, seedPoint, newVal[, loDiff[, upDiff[, flags]]])

image参数表示输入/输出1或3通道,8位或浮点图像。

mask参数表示掩码,该掩码是单通道8位图像,比image的高度多2个像素,宽度多2个像素。填充时不能穿过输入掩码中的非零像素。

seedPoint参数表示泛洪算法(漫水填充算法)的起始点。

newVal参数表示在重绘区域像素的新值。

loDiff参数表示  当前观察像素值 与其 部件邻域像素值或待加入该组件的种子像素之间的亮度或颜色之负差的最大值。

upDiff参数表示当前观察像素值与其部件邻域像素值或待加入该组件的种子像素之间的亮度或颜色之正差的最大值。

FLOODFILL_FIXED_RANGE:表示此标志会考虑当前像素与种子像素之间的差,否则就考虑当前像素与相邻像素的差。

FLOODFILL_MASK_ONLY:表示函数不会去填充改变原始图像,而是去填充掩码图像mask,mask指定的位置为零时才填充,不为零不填充。(只在mask里面填充,所以mask 的取值至关重要,如果他认为被填充过了,就不会理你)

设置FLOODFILL_FIXED_RANGE – 改变图像,泛洪填充     

设置FLOODFILL_MASK_ONLY – 不改变图像,只填充遮罩层本身,忽略新的颜色值参数。(他会对遮罩层本身进行一个填充,但是其实也是要填冲图像的,但是这里的遮罩层必须是0,,如果遮罩层为1了,他就根本不会填充图像)

  mask = np.zeros([h+2,w+2],np.uint8)  

    # 这里必须是uint8才能去做mask,而且h和w都是必须+2。

    # 个人想法:+2,是为了保证横竖两头,位移扫描的时候保证能把边界全部扫上

    # 起始填充位,填充完后的值是什么(黄色),低值,高值,填充的flag:填充方法选择

    # 所以从(30,30)这个点开始,min = 起始点像素值 - (100,100,100),,max = 起始点像素值 - (50,50,50),在[min, max]之间的都渲染。所以很明显黑色不在这个范围,没有渲染

  cv.floodFill(copy_image, mask, (30,30),(0, 255,255), (100,100,100), (50,50,50), cv.FLOODFILL_FIXED_RANGE)

   cv.imshow("fill_color_demo",copy_image)


6.3.2 二值填充

这里mask一定要注意注意!!!!是先初始化为1, 然后再赋值为0. 填充和其它问题刚好是一个相反的过程,使用其他的方法的时候,为1 的区域才会被填充,使用floodFill刚好相反,不为1的地发就会被填充。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342