数字图像处理

OpenCV数字图像处理(3) 镜像

≯℡__Kan透↙ 提交于 2020-02-02 17:58:18
【转载请注明出处 : http://blog.csdn.net/leytton/article/details/35653687 】 配套使用的OpenCV版本: 2.4.9 ; Python版本:2.7 主要参考文章(感谢作者分享) 1、 python 简单图像处理(2) 镜像 http://www.cnblogs.com/xianglan/archive/2010/12/25/1916982.html 2、 OpenCV Python教程(1、图像的载入、显示和保存)http://blog.csdn.net/sunny2038/article/details/9057415 程序极其类似于参考文章1、文章1使用的是OpenCV2.0,而OpenCV2.49的写法稍有不同 效果参考文章1,语法参考文章2 主要思想 : 图像的镜像变换分为三种:水平镜像、垂直镜像、对角镜像。设图像的大小为M×N,则 水平镜像可按公式 I = i J = N - j - 1 垂直镜像可按公式 I = M - i - 1 J = j 对角镜像可按公式 I = M - i - 1 J = N - j - 1 注意在OpenCV中坐标是从[0,0]开始的 最终代码: import cv2 import numpy as np image = cv2.imread('feng.png') Vertical

OpenCV数字图像处理(2) 反色

天大地大妈咪最大 提交于 2020-02-02 17:16:16
【转载请注明出处 : http://blog.csdn.net/leytton/article/details/35637729 】 配套使用的OpenCV版本: 2.4.9 ; Python版本:2.7 主要参考文章(感谢作者分享) 1、 python 简单图像处理(1) 反色 http://www.cnblogs.com/xianglan/archive/2010/12/25/1916953.html 2、 OpenCV Python教程(1、图像的载入、显示和保存)http://blog.csdn.net/sunny2038/article/details/9057415 程序极其类似于参考文章1、文章1使用的是OpenCV2.0,而 OpenCV2.49的写法稍有不同 效果参考文章1,语法参考文章2 主要思想: tuple2= tuple(255-R,255-G,255-B) 最终代码: #-*-coding:utf-8-*- #解决中文注释问题 import cv2 image = cv2.imread('sa.jpg') #读取图像 image2 = image.copy() #复制图像 for i in range(0,image.shape[0]): #image.shape表示图像的尺寸和通道信息(高,宽,通道) for j in range(0,image

OpenCV数字图像处理(4) 平移

瘦欲@ 提交于 2020-02-02 15:54:26
【转载请注明出处 : http://blog.csdn.net/leytton/article/details/35986791 】 配套使用的OpenCV版本: 2.4.9 ; Python版本:2.7 主要参考文章(感谢作者分享) 1、 python 简单图像处理(3) 平移 http://www.cnblogs.com/xianglan/archive/2010/12/26/1917070.html 2、 OpenCV Python教程(1、图像的载入、显示和保存)http://blog.csdn.net/sunny2038/article/details/9057415 程序极其类似于参考文章1、文章1使用的是OpenCV2.0,而OpenCV2.49的写法稍有不同 效果参考文章1,语法参考文章2 主要思想(转载自文章1) : 平移是最简单的一种变换,是将一幅图像上的所有点都被按照给定的偏移量在水平方向沿X轴、在垂直方向沿y轴移动 其变换公式是  可用矩阵变换公式 逆变换方法是 若移动后大小不变 当多余部分填充为黑色时 平移结果为 当多余部分为白色时 平移结果为 若移动后图像尺寸变大 则平移结果为 最终代码: #-*-coding:utf-8-*- #解决中文注释问题 import cv2 import numpy as np image = cv2.imread(

数字图像处理及应用(期末复习整理)

社会主义新天地 提交于 2020-02-01 17:08:32
一、图像及其类型 图像(image)的定义是: 在一般意义下,一幅图像是一个物体或对象(object)的另一种表示。亦即图像是其所表示物体或对象信息的一个直接描述和浓缩表示。简而言之,即图像是物体在平面坐标上的直观再现。一幅图像包含了所表示物体的描述信息和特征信息,或者说图像是与之对应的物体或抽象的一个真实表示,这个表示可以通过某些技术手段实现。 数字图像处理(digital image processing): 又称为计算机图像处理,它是通过计算机对图像进行去除噪声、增强、变换、复原、分割、特征提取、识别等运算与处理。 图像的分类: 可见图像(visible image): 是指视觉系统可以直接看见的图像,这也是大多数人在日常生活中所见到的和所理解的图像,这一类图像一般通过照像、手工绘制等传统方法获得,通常计算机不能直接处理,但是经过数字化处理后可变为数字图像。 物理图像(physical image): 所反映的是物体的电磁波辐射能,包括可见光和不可见光图像。 数字图像(maths image) :指由连续函数或离散函数生成的抽象图像,其中离散函数所生成的图像就是计算机可以处理的数字图像。 其他相关概念: 计算机图形学(computer graphic): 是指利用计算机技术将概念或数学描述所表示的物体(非实物)图像进行处理和显示的过程。 计算机视觉(computer

数字图像处理(八)——Matlab实现单阈值与多阈值分割

青春壹個敷衍的年華 提交于 2020-02-01 10:30:32
实验内容 对左侧图像进行单阈值、多阈值分割,分别得到右侧的结果。请大家实现这两种方法的分割,对比单阈值与多阈值以及不同阈值的分割效果。 实验一:单阈值分割 方法一:人工阈值选择法: 阈值分割最简单的方法就是人工选择法。基于灰度阈值的分割方法,其关键是如何合理的选择阈值。人工选择方法是通过人眼的观察,应用人对图像的知识,在分析图像直方图的基础上,人工选择出合理的阈值。也可以在人工选择出阈值后,根据分割的效果,不断地进行交互操作,从而选择出最佳的阈值。首先,图像的原图如下: 其次,利用imhist()函数显示出图像的灰度直方图: 通过观察图像灰度直方图可以发现,在150-200之间的灰度值出现很少,而在两边出现了明显的两个高峰,因此根据人工选择阈值法选取183作为图像的阈值分割点,得到的实验效果图如下图所示: 通过观察可以发现人工阈值选择法成功得出了实验效果图,利用灰度直方图的峰谷阈值方法是一种有效且简单的阈值方法,但是该方法有一个局限性,就是要求图像的灰度直方图必须具有双峰型。 方法二:Ostu法: Ostu法是一种使类间方差最大的自动确定阈值的方法,该方法具有简单、处理速度快的特点,是一种常用的阈值选取方法。算法的具体步骤如下: 1、给定一个初始阈值Th,将图像分为C1和C2两类。 2、分别计算出每个灰度值在图像矩阵中的个数,存放在count()矩阵当中。 3

数字图像处理四 | 灰度形态学操作原理及python实现

ぃ、小莉子 提交于 2020-01-27 05:30:30
图像处理总结4 灰度形态学 之前说过: 形态学起源于法国巴黎高等矿业学院,因为人家是搞地质的。 可见一斑,形态学的精要就是在于将图像看作是等高线组成的地形图,他的基本操作就是动土,平高填低等等。 之前的二值形态学针对的是二值图片,在地形上,就像是现代的建筑,拔地而起没有一定的梯度。 而这篇是针对灰度图片的形态学,这时的图片就更像自然界的地貌,像山川,像河谷。 基本操作 基本操作也是腐蚀和膨胀。 Dilation(膨胀): 先看公式: F ⨁ k = m a x a , b ∈ k { F ( x + a , y + b ) + k ( a , b ) } F\bigoplus k=max_{a,b\in k}\{F(x+a,y+b)+k(a,b)\} F ⨁ k = m a x a , b ∈ k ​ { F ( x + a , y + b ) + k ( a , b ) } 同样有两种算法。 1)平移 对原图先加上SE对应部分的值,再向SE对应的位置平移,然后取最大值。 比如,现在有一个一维的SE: [1,2,3], 中心点定为第一个点,就是“1”。 那么首先对应于“1”,则是原图位置不变加1. 对于“2”,原图灰度值加2,向右平移一位。 对于“3”,原图灰度值加3,向右平移两位。 最后将三张图重合,并在原图区域取最大值,作为结果图。 2)盖章 SE在原图上滑动,每个滑动的位置

数字图像处理——直方图累计

拟墨画扇 提交于 2020-01-19 05:14:04
数字图像处理——直方图累计 % 函数名称为Image_Hist , 输入参数Image , 输出参数Hist function [ Hist ] = Image_Hist ( Image ) % 获取矩阵的行、列、波段数 [ m , n , bands ] = size ( Image ) ; % 将三维矩阵转换成二维矩阵,方便计算 Image1 = reshape ( Image , [ m * n , bands ] ) ; % 初始化三维矩阵,行表示 256 种灰度,列表示灰度值、个数、累计个数 Hist = zeros ( 256 , 2 , bands ) ; % 求每个波段中每个灰度值的个数 for k = 1 : bands for i = 1 : 256 for j = 1 : m * n if ( Image1 ( j , k ) == i - 1 ) Hist ( i , 1 , k ) = Hist ( i , 1 , k ) + 1 ; end end end end % 转换为频率直方图 Hist = Hist . / ( m * n ) ; % 求每个波段每个灰度的累计个数 Hist ( 1 , 2 , : ) = Hist ( 1 , 1 , : ) ; for k = 1 : bands for i = 2 : 256 Hist ( i , 2 ,

【数字图像处理】实验一

天涯浪子 提交于 2020-01-11 05:10:58
一、题目 Sergei Mikhailovich Prokudin-Gorskii (1863 - 1944)是一位超越其所在时代的人,早在1907年,他就坚信彩色摄影将成为未来的发展趋势。在当时,由于沙皇的特别许可,他可以周游辽阔的沙俄帝国并拍摄他所看到的事物,包括列夫·托尔斯泰唯一的彩色肖像。他用简单原始的彩色摄影法拍下了很多东西:人、建筑、风景、铁路、桥梁……!其所采用的彩色摄影法很简单:分别用红、绿、蓝滤光片把每个场景的三次曝光记录到一个玻璃底板上,并设想通过特殊的投影装置将三种颜色的底片叠加显示,从而让观众能够通过彩色照片了解这个幅员辽阔的国家。可惜,他的计划从未实现:他在1918年的十月革命后离开了俄罗斯,再也没有回来。幸运的是,他所拍摄的沙俄帝国最后几年的RGB玻璃板底片保存了下来,并于1948年被美国国会图书馆(LoC)买下。LoC最近将底片数字化,并可以通过网络供公众下载。 本次实验的目的是利用图像处理技术,基于数字化存储的玻璃底板图像自动生成尽量非虚化的彩色图像。为完成本次实验,你需要从原始图像文件中分割提取三个彩色通道图像,将它们对齐并彼此叠加在一起,最终形成一张RGB彩色图像。美国国会图书馆在其网站上详细说明了他们对这批照片进行复原并创建彩色图像的过程,大家可以参考 http://www.loc.gov/exhibits/empire/making.html

彻底理解数字图像处理中的卷积-以Sobel算子为例

回眸只為那壹抹淺笑 提交于 2019-12-26 09:04:55
彻底理解数字图像处理中的卷积-以Sobel算子为例 作者:FreeBlues 修订记录 - 2016.08.04 初稿完成 概述 卷积 在信号处理领域有极其广泛的应用, 也有严格的物理和数学定义. 本文只讨论卷积在数字图像处理中的应用. 在数字图像处理中, 有一种基本的处理方法: 线性滤波 . 待处理的平面数字图像可被看做一个大矩阵, 图像的每个像素对应着矩阵的每个元素, 假设我们平面的分辨率是 1024*768 , 那么对应的大矩阵的 行数 = 1024 , 列数 = 768 . 用于滤波的是一个滤波器小矩阵(也叫 卷积核 ), 滤波器小矩阵一般是个方阵, 也就是 行数 和 列数 相同, 比如常见的用于边缘检测的 Sobel 算子 就是两个 3*3 的小矩阵. 进行滤波就是对于大矩阵中的每个像素, 计算它周围像素和滤波器矩阵对应位置元素的乘积, 然后把结果相加到一起, 最终得到的值就作为该像素的新值, 这样就完成了一次滤波. 上面的处理过程可以参考这个示意图: 图像卷积计算示意图: 对图像大矩阵和滤波小矩阵对应位置元素相乘再求和的操作就叫 卷积 ( Convolution )或 协相关 ( Correlation ). 协相关 ( Correlation )和 卷积 ( Convolution )很类似, 两者唯一的差别就是 卷积 在计算前需要翻转 卷积核 , 而 协相关

数字图像处理------中值滤波

拟墨画扇 提交于 2019-12-26 08:53:28
一 中值滤波概念 中值滤波算法以某像素的领域图像区域中的像素值的排序为基础,将像素领域内灰度的中值代替该像素的值[1]; 如:以3*3的领域为例求中值滤波中像素5的值 图1 1)int pixel[9]中存储像素1,像素2...像素9的值; 2)对数组pixel[9]进行排序操作; 3)像素5的值即为数组pixel[9]的中值pixel[4]。 中值滤波对处理椒盐噪声非常有效。 二 中值滤波代码实现 项目工程: https://github.com/ranjiewwen/Everyday_Practice/tree/master/MedianFilter/MedianFilter/MedianFilter //中值滤波:本算法采用3*3的领域范围 void MyImage::MedianFilterOper() { //0. 准备:获取图片的宽,高和像素信息, int const num = 3 * 3; unsigned char pixel[num] = { 0 }; //保存领域的像素值 int width = m_bmpInfo.biWidth; int height = m_bmpInfo.biHeight; int widthbyte = (width * m_bmpInfo.biBitCount / 8 + 3) / 4 * 4; //保证为4的倍数 //相对于中心点