超大图像的二值化方法

1.可以采用分块方法,

2.先缩放处理就行二值化,然后还原大小

一:分块处理超大图像的二值化问题

def big_image_binary(image):
print(image.shape) #(, , )  #超大图像,屏幕无法显示完整
cw,ch = ,
h,w = image.shape[:]
gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY) #要二值化图像,要先进行灰度化处理
for row in range(,h,ch):
for col in range(,w,cw):
roi = gray[row:row+ch,col:col+cw] #获取分块
# ret,binary = cv.threshold(roi,,,cv.THRESH_BINARY|cv.THRESH_OTSU)  #全局阈值
binary = cv.adaptiveThreshold(roi,,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,,)  #局部阈值
gray[row:row + ch, col:col + cw] = binary  #分块覆盖
print(np.std(binary),np.mean(binary)) cv.imwrite("binary2.jpg",gray)

(一)全局阈值处理

ret,binary = cv.threshold(roi,,,cv.THRESH_BINARY|cv.THRESH_OTSU)  #全局阈值

(二)局部阈值(更好)

binary = cv.adaptiveThreshold(roi,,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,,)  #局部阈值

二:空白区域过滤

def big_image_binary(image):
print(image.shape) #(, , )
cw,ch = ,
h,w = image.shape[:]
gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY) #要二值化图像,要先进行灰度化处理
for row in range(,h,ch):
for col in range(,w,cw):
roi = gray[row:row+ch,col:col+cw] #获取分块
dev = np.std(roi)
avg = np.mean(roi)
if dev < and avg > :  #满足条件,接近空白区域,让他变黑
gray[row:row + ch, col:col + cw] = #全部都赋值为0
else:
ret,binary = cv.threshold(roi,,,cv.THRESH_BINARY|cv.THRESH_OTSU)
gray[row:row + ch, col:col + cw] = binary
print(np.std(binary), np.mean(binary)) cv.imwrite("binary.jpg",gray)

相关知识补充

(一)numpy中相关方法介绍

numpy.std() 计算矩阵标准差

numpy mean()用法返回数组元素的平均值

(二)空白图像的过滤(当我们确认该区域为空白图像,可以不作处理,不进行二分处理)

print(np.std(binary),np.mean(binary))
通过上面获取图像的标准差和平均值,当标准差为0,平均值为255时,代表该区域为空白区域
我们可以将该空白区域(或者满足一定条件的区域),直接设置为0或者255或者其他想要获取的图像,不需要进行多余的阈值二分

OpenCV---超大图像二值化和空白区域过滤的更多相关文章

  1. opencv python 图像二值化/简单阈值化/大津阈值法

    pip install matplotlib 1简单的阈值化 cv2.threshold第一个参数是源图像,它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是maxVal,它表 ...

  2. 10、OpenCV Python 图像二值化

    __author__ = "WSX" import cv2 as cv import numpy as np #-----------二值化(黑0和白 255)---------- ...

  3. [python-opencv]超大图像二值化方法

    *分块 *全局阈值 VS 局部阈值 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape ...

  4. [python-opencv]图像二值化【图像阈值】

    图像二值化[图像阈值]简介: 如果灰度图像的像素值大于阈值,则为其分配一个值(可以是白色255),否则为其分配另一个值(可以是黑色0) 图像二值化就是将灰度图像上的像素值设置为0或255,也就是将整个 ...

  5. Python+OpenCV图像处理(十)—— 图像二值化

    简介:图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程. 一.普通图像二值化 代码如下: import cv2 as cv import numpy ...

  6. OpenCV_基于局部自适应阈值的图像二值化

    在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...

  7. 致敬学长!J20航模遥控器开源项目计划【开局篇】 | 先做一个开机界面 | MATLAB图像二值化 | Img2Lcd图片取模 | OLED显示图片

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...

  8. C# 指针操作图像 二值化处理

    /// <summary> /// 二值化图像 /// </summary> /// <param name="bmp"></param& ...

  9. openCV_java 图像二值化

    较为常用的图像二值化方法有:1)全局固定阈值:2)局部自适应阈值:3)OTSU等. 局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值.这样做的好处在于每个像素位置处的二值化 ...

随机推荐

  1. 曾经我是一个只会excel的数据分析师,直到我遇到了……

    我是一个数据分析师. 准确来说我是一个当年只会excel数据透视表,就天不怕地不怕地来当数据分析师的人.当年的某一天,我的老板Q我: 小刘啊,我小姨子给了我一个全国市委书记的名单,你帮我看看,有什么规 ...

  2. 7. B+树

    一.B+树是应文件系统所需而产生的一种B树的变形树 1. 定义(使用阶数m来定义) 除了根结点外,其他非终端结点最多有m个关键字,最少有⌈m/2⌉个关键字 结点中的每个关键字对应一个子树 所有的非终端 ...

  3. 20181009-3 Scrum立会报告+燃尽图02

    此作业要求:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2190] 一.小组介绍 组长:王一可 组员:范靖旋,王硕,赵佳璐,范洪达,祁 ...

  4. mysql 查询数据库或某张表有多大(字节)

    转载:https://www.cnblogs.com/diandiandidi/p/5582309.html 1.要查询表所占的容量,就是把表的数据和索引加起来就可以了 select sum(DATA ...

  5. Java中的生产者、消费者问题

    Java中的生产者.消费者问题描述: 生产者-消费者(producer-consumer)问题, 也称作有界缓冲区(bounded-buffer)问题, 两个进程共享一个公共的固定大小的缓冲区(仓库) ...

  6. 如何解决Unsupported Architecture. Your executable contains unsupported architecture '[x86_64, i386]

    APP改版测试后准备Archive发布时,结果居然出现题目中的错误提示.查了一下,如果archive的时候没有选[iOS](http://lib.csdn.net/base/ios)  Devices ...

  7. 赋予Winform程序管理员访问权限

    业务场景:Winform操作系统盘文件夹时进行文件的读写时,会需要管理员权限打开文件. 解决方案: 在项目文件中找到app.manifest文件打开. 替换requestedExecutionLeve ...

  8. wpf下使用NotifyIcon

    以前在winForm下使用过NotifyIcon,到wpf找不到了,在wpf下还是直接用WinForm里的那个NotifyIcon实现最小到系统托盘 定义一个NotifyIcon成员 : Notify ...

  9. codeforces 1023 D. Array Restoration 并查集

    D. Array Restoration time limit per test 1 second memory limit per test 256 megabytes input standard ...

  10. java中枚举型的定义以及使用

    1.如何定义枚举型 public enum gender{ GEN1("男","1"), GEN2("女","0"); ...