IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python随机添加噪声(高斯,椒盐,对比度高低) -> 正文阅读

[人工智能]python随机添加噪声(高斯,椒盐,对比度高低)

class NoiseGenerator(object):
    def generated_noise(self, img, num):
        print("*****************")
        for i1, char in enumerate(num):
            if num[i1] == 0:
                img = self.original(img)
                print("原图")
            elif num[i1] == 1:
                img = self.gaussian_img(img)
                print("添加了高斯模糊")
            elif num[i1] == 2:
                img = self.salt_img(img)
                print("添加了椒盐噪声")
            elif num[i1] == 3:
                img = self.liner(img, a=2)
                print("增加了对比度")
            elif num[i1] == 4:
                img = self.liner(img, a=0.5)
                print("降低了对比度")
        return img

    def gaussian_img(self, img):  # 高斯模糊
        im = cv2.GaussianBlur(img, (9, 9), 5)
        return im

    def salt_img(self, img):  # 椒盐噪声
        n = int(img.shape[0] * img.shape[1] * 0.1)
        ilist = np.random.randint(0, img.shape[1], n)
        jlist = np.random.randint(0, img.shape[0], n)
        for k in range(n):
            i = ilist[k]
            j = jlist[k]
            if img.ndim == 2:
                img[j, i] = 255
            elif img.ndim == 3:
                img[j:j + 1, i:i + 1, :] = 255
        return img

    def liner(self, img, a):  # 线性变换,增强图像的对比度
        out_image = float(a) * img
        # 进行数据截断, 大于255的值要截断为255
        out_image[out_image > 255] = 255
        # 数据类型转化
        out_image = np.round(out_image)
        out_image = out_image.astype(np.uint8)
        return out_image

    def original(self, img):
        return img


if __name__ == '__main__':

    rd = NoiseGenerator()   # 调用创建的随机噪声类
    filenames = './positive_sample'  # 图像所在文件夹
    a = list(range(5))  # 最多2种噪声的叠加, range(A): 0 ~ A-1
    b = []
    # 随机抽取两类噪声所有的类型,这里相当于在五个数中随机抽取两个数
    for i in itertools.product(a, repeat=2):  
        b.append(i)

    for index, char in enumerate(b):  
# 获取所有可能类型的索引和数值,如index=0, char="0.jpg"
        i_name = 0  # 保存图像名称
        for image_name in os.listdir(filenames):  # image_name = "0.jpg"
            c = b[index]         # c=char,为了写循环,将char获取的图像名称用取索引的方式得到
            img_path = filenames + '/' + image_name  # 图像路径
            img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)  # 读取图像
            # 随机产生噪声,例如c=[2,3],则添加椒盐噪声和增加图像对比度
            result_image = rd.generated_noise(img, c)  
            # cv2.imshow("img1", result_image)
            # cv2.waitKey(0)
            index += 1
            # 在循环一次b中的所有情况后,index取得最大值25,将indedx置为0,继续循环
            if index == 25: 
                index = 0
            cv2.imwrite('./add_noise_sample/{}.jpg'.format(i_name), result_image)
            i_name += 1

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:35:19  更:2022-03-22 20:39:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:38:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码