代码查询

MATLAB

mat2gray() 归一化处理

img_dst=mat2gray(img_src,[mix,max])

  • 将img_src矩阵中位于min-max的值归一化处理[0,1],小于或超出变为0和1

size() 获取图像尺寸

[wid,hei]=size(img_src)

ones() 新建值为1的矩阵

ones(n) %返回n*n值全为1的矩阵

zeros() 新建矩阵

plot=zeros(wid,hei)

  • wid,hei:矩阵尺寸

rgb2gray() 转换为灰度图像

img_dst=rgb2gray(img_src)

imhist() 显示直方图

imhist(img_src,n)

  • n:灰度等级

histeq() 直方均衡化

img_dst=histeq(img_src,n)

  • n:均衡化后灰度等级

randn() 随机数(标准正态分布(0,1))

Y=randn(n) %返回一个n*n随机项的矩阵
Y=randn(m,n) %返回一个m*n随机项的矩阵
Y=randn(m,n,p...) or Y=randn([m,n,p...]) %返回一个随机数组
Y=randn(size(A)) %返回一个和A同样维数的随机数组
Y=randn(1,5);rng(s);Y1=randn(1,5) %会发现Y和Y1的数列是一样的,因为rng(s)是恢复随机数列发生器
我们知道,高斯分布图顶点坐标(μ,σ),而randn(n)是产生标准正态即(0,1),所以我们想产生一个期望μ=a,方差σ^2=b的随机数,只需要:
Y=a+sqrt(b)*randn()

添加噪声imnoise()

fspecial() 建预定义的滤波算子

h = fspecial(type)
h = fspecial('average',hsize) %均值滤波,默认3*3
h = fspecial('disk',radius)
h = fspecial('gaussian',hsize,sigma) %高斯低通滤波,hsize默认3*3,sigma标准差默认0.5
h = fspecial('laplacian',alpha) %拉普拉斯算子,alpha范围[0,1],默认0.2
h = fspecial('log',hsize,sigma) %拉普拉斯高斯算子,hsize默认3*3,sigma标准差0.5(pix)
h = fspecial('motion',len,theta) %len运动长度(默认9),theta逆时针角度(默认0)
h = fspecial('prewitt') %用于边缘增强
h = fspecial('sobel') %边缘提取

自适应滤波和估计噪声

img_dst=wiener2(img_src,[m,n],noise)
[img_dst,noise]=wiener2(img_src,[m,n])

  • 窗口大小默认3*3

filter2() 二维(灰度)中值滤波

img_dst=medfilt2(img_src,[m*n],padopt)

  • m*n:默认3x3,定义区域(包括中心像素)
  • padopt:'zeros':用0填充bianjie;'symmetric':对称扩展;'indexed':若img_src是double则用1填充,否则用0

imfilter() 滤波

img_dst=imfilter(img_src,w,method,boundary)

  • w:滤波掩模
  • method:'corr':相关计算(默认);'conv':卷积计算
  • boundary:n:用n填充扩展(默认并设n=0);'replicate':通过复制边界值扩展;'symmetric':通过镜像反射扩展;'circular':将图像看作二位周期函数的一个周期来扩展
  • size:'full':输出与被扩展图像相同大小;'same':输出与输入图像相同大小(默认)

imwrite() 写入图形文件

imwrite(A,'filename')

  • A:图形数据
  • filename:文件名,必须指定后缀名
  • 如果 A 属于数据类型 uint8,则 imwrite 输出 8 位值。
  • 如果 A 属于数据类型 uint16 且输出文件格式支持 16 位数据(JPEG、PNG 和 TIFF),则 imwrite 将输出 16 位的值。如果输出文件格式不支持 16 位数据,则 imwrite 返回错误。
  • 如果 A 是灰度图像或者属于数据类型 double 或 single 的 RGB 彩色图像,则 imwrite 假设动态范围是 [0,1],并在将其作为 8 位值写入文件之前自动按 255 缩放数据。如果 A 中的数据是 single,则在将其写入 GIF 或 TIFF 文件之前将 A 转换为 double。
  • 如果 A 属于 logical 数据类型,则 imwrite 会假定数据为二值图像并将数据写入位深度为 1 的文件(如果格式允许)。BMP、PNG 或 TIFF 格式以输入数组形式接受二值图像。
  • 如果 A 包含索引图像数据,则应另外指定 map 输入参数。

cat() 矩阵合成彩图

img=cat(n,x_1,x_2...x_n)

  • n:指定后面矩阵个数
  • img:以uint8输出

 


Python+OpenCV

均值滤波

img_dst=cv2.blur(img_src,(5,5))

  • (5,5):内核大小

高斯滤波

img_dst=cv2.GaussianBlur(img_src,(5,5),0)

  • (5,5):内核大小
  • 0:x和y方向的方差,不指定则根据内核大小计算,单指定x,则令y=x

中值模糊

img_dst=cv2.medianBlur(img_src,5)

  • 5:内核大小

双边过滤

img_dst=cv2.bilateralFiter

  • (img_src,9.75,75)
posted @ 2020-03-06 20:03  盐亭的森林  阅读(413)  评论(0编辑  收藏  举报