图像滤波

双边滤波(磨皮美白)

匿名 (未验证) 提交于 2019-12-02 23:59:01
#双边滤波函数:bilateralFilter(src,d,sigmaColor,sigmaSpace)# src:输入图像# d:过滤时周围每个像素领域的直径# sigmaColor:在color space中过滤sigma。参数越大,临近像素将会在越远的地方mix。# sigmaSpace:在coordinate space中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大。import cv2img = cv2.imread('D:/pythonob/imageinpaint/img/freckle.jpg',1)dst = cv2.bilateralFilter(img,15,35,35)cv2.imshow('src',img)cv2.imshow('dst',dst)cv2.waitKey(0)效果图: 来源:博客园 作者: Bambo0 链接:https://www.cnblogs.com/cxxBoo/p/11481592.html

OpenCv高斯滤波

匿名 (未验证) 提交于 2019-12-02 23:56:01
/*入门学习 图像滤波 Filtering 是图像处理中的一个基本操作,其目的是为了提取图像中被认为重要的那些部分。 滤波可以去除图像中的噪声,提取感兴趣的视觉特征,允许图像重采样等。 这里我们了解一些基本的内容。 观察一幅图像时,我们看到不同的灰度(或彩色值)在图像中的分布。图像之间存在不同是因为他们有不同的灰度分布。 因此存在另一种进行图像处理的方式:观察图像中存在的灰度的变化。 一些图像中包含大面积恒定的灰度强度,另一些图片中灰度变化迅速。 因此观察图像中灰度或者像素点变化的频率构成了一种描述图像的方式,这种观点被称为频域。通过观察灰度的分布 来描述一幅图像 被称为空间区域。 空间域又称图像空间(image space)。由图像像元组成的空间。 在图像空间中以长度(距离)为自变量直接对像元值进行处理称为空间域处理。 以空间坐标作为变量进行的研究就是空间域。 频域分析按照高频到低频的次序 ,分解图像到频率内容。低频对应区域的图像强度变化缓慢,高频区域是由快速变化的图像 强度生成的。图像时二维的,他包含垂直频率(垂直方向的变化)和水平频率(水平方向的变化) 频域分析的框架下,滤波操作的作用是增强部分频段,同时限制或者衰减其他频段。 低频滤波器去除了图像中的高频成分,高通滤波器去除了低频成分。 这篇博客个人觉得讲的非常好:https://blog.csdn.net/qq

opencv学习之图像滤波预处理 #201906101646

匿名 (未验证) 提交于 2019-12-02 23:39:01
`#include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main(){ Mat pic_src = imread("/Users/leung/Documents/imgs/lena.jpg"); Mat logo_src = imread("/Users/leung/Desktop/right.jpg"); Mat pic,pic_half,pic_gray1,pic_gray2,pic_median,pic_blur; GaussianBlur(pic_src, pic, Size(5,5), 0); medianBlur(pic_src, pic_median, 5); blur(pic_src, pic_blur, Size(5,5)); // pyrDown(pic_src, pic_half); // cvtColor(pic_half, pic_gray1, COLOR_BGR2GRAY); //threshold(pic_gray1, pic_gray2, 170, 255, THRESH_BINARY); imshow("pic_median", pic_median); imshow("pic_blur", pic_blur); imshow("pic", pic);

python&amp;opencv 图像的双边滤波

匿名 (未验证) 提交于 2019-12-02 22:51:30
双边滤波的操作主要是ccv2.bilateralFilter()函数来操作,它能够保持边界清晰的情况下有效的去除噪声,但是这种操作比较慢。它拥有着美颜的效果: 下面是代码演示: import cv2 def bi_demo (image) : #高斯双边滤波 dst = cv2.bilateralFilter(src=image, d= 0 , sigmaColor= 100 , sigmaSpace= 15 ) cv2.namedWindow( 'bi_demo' , 0 ) cv2.resizeWindow( 'bi_demo' , 300 , 400 ) cv2.imshow( "bi_demo" , dst) ''' 其中各参数所表达的意义: src:原图像; d:像素的邻域直径,可有sigmaColor和sigmaSpace计算可得; sigmaColor:颜色空间的标准方差,一般尽可能大; sigmaSpace:坐标空间的标准方差(像素单位),一般尽可能小。''' def mean_shift_demo (image) : #均值偏移滤波 dst = cv2.pyrMeanShiftFiltering(src=image, sp= 15 , sr= 20 ) cv2.namedWindow( 'mean_shift image' , 0 ) cv2

Python下opencv使用笔记(图像频域滤波与傅里叶变换)

空扰寡人 提交于 2019-12-02 12:50:34
https://blog.csdn.net/anqijiayou/article/details/79835853 Python下opencv使用笔记(图像频域滤波与傅里叶变换) 2018-04-06 19:07:26 一只程序喵 阅读数 980 更多 分类专栏: python+opencv 本文转载自 https://blog.csdn.net/on2way/article/details/46981825 首先谢谢原创博主了,这篇文章对我帮助很大,记录下方便再次阅读。 Python下opencv使用笔记(图像频域滤波与傅里叶变换) 前面曾经介绍过空间域滤波,空间域滤波就是用各种模板直接与图像进行卷积运算,实现对图像的处理,这种方法直接对图像空间操作,操作简单,所以也是空间域滤波。 频域滤波说到底最终可能是和空间域滤波实现相同的功能,比如实现图像的轮廓提取,在空间域滤波中我们使用一个拉普拉斯模板就可以提取,而在频域内,我们使用一个高通滤波模板(因为轮廓在频域内属于高频信号),可以实现轮廓的提取,后面也会把拉普拉斯模板频域化,会发现拉普拉斯其实在频域来讲就是一个高通滤波器。 既然是频域滤波就涉及到把图像首先变到频域内,那么把图像变到频域内的方法就是傅里叶变换。关于傅里叶变换,感觉真是个伟大的发明,尤其是其在信号领域的应用,对于傅里叶变换的理解,要是刚接触这个东西

基于记忆性的中值滤波O(r)与O(1)复杂度的算法实现

南楼画角 提交于 2019-12-01 06:16:21
   本文参考博客: https://www.cnblogs.com/Imageshop/archive/2013/04/26/3045672.html   原生的中值滤波是基于排序算法的,这样的算法复杂度基本在O(r 2 )左右,当滤波半径较大时,排序算法就显得很慢。对此有多种改进算法,这里介绍经典 的Huang算法与O(1)算法,两者都是基于记忆性的算法,只是后者记性更强。   排序算法明显的一个不足之处就是无记忆性。当核向右移动一列后,只是核的最左和最右列数据发生了变化,中间不变的数据应当被存储起来,而排序算法 并没有做到这点。Huang算法的思想是建立一个核直方图,来统计核内的各灰度的像素数。当核向右移动时,就将新的一列所有数据加入到直方图中,同时将最 左列的旧数据从直方图中删除,如下图所示。这样做使得大部分数据能够被记忆,减少重复操作。当直方图更新完毕后,就可以通过从左到右累计像素来找到中值。                  下面是算法具体实现步骤与代码:   1.每行开始都将直方图、像素计数、中值变量清零,将核覆盖的所有像素加到直方图中。   2.计算中值,sumcnt为小于中值灰度的像素数和。如果当前sumcnt大于等于阈值,则表明,实际中值比当前median小,则直方图向左减去像素数,同时median    也减小,直到sumcnt小于阈值

python skimage图像处理(二)

試著忘記壹切 提交于 2019-12-01 05:00:28
python skimage图像处理(二) This blog is from: https://www.jianshu.com/p/66e6261f0279 图像简单滤波 对图像进行滤波,可以有两种效果:一种是平滑滤波,用来抑制噪声;另一种是微分算子,可以用来检测边缘和特征提取。 skimage库中通过filters模块进行滤波操作。 1、sobel算子 sobel算子可用来检测边缘 函数格式为: skimage.filters.sobel(image, mask=None) from skimage import data,filters import matplotlib.pyplot as plt img = data.camera() edges = filters.sobel(img) plt.imshow(edges,plt.cm.gray) 2、roberts算子 roberts算子和sobel算子一样,用于检测边缘 调用格式也是一样的: edges = filters.roberts(img) 3、scharr算子 功能同sobel,调用格式: edges = filters.scharr(img) 4、prewitt算子 功能同sobel,调用格式: edges = filters.prewitt(img) 5、canny算子 canny算子也是用于提取边缘特征

Matlab图像处理——中值滤波medfilt2问题解决

泪湿孤枕 提交于 2019-11-30 16:43:49
本文链接:https://blog.csdn.net/Pxzly1117/article/details/79201772 程序: I=imread('13.jpg');%读入图像 imshow(I); h=imnoise(I,'salt & pepper');%为I图片叠加椒盐噪声噪声 figure;imshow(h); w=[1 2 1;2 4 2;1 2 1]/16;%高斯模板 I5=imfilter(h,w,'corr','replicate');%高斯平滑 figure;imshow(I5); w=[1 1 1;1 1 1;1 1 1]/9;%平均模板 I7=imfilter(h,w,'corr','replicate');%平均平滑 figure;imshow(I7); I9=medfilt2(h,[3,3]);%中值滤波 figure;imshow(I9); 出现错误: 问题: 中值滤波medfilt2,用法是B = medfilt2(A, [m n]),输入图像A应是二维矩阵,程序中输入图像h是由imread得到的I加上噪声得到的,而imread读到的图像I通常是3维RGB图,是三维矩阵,因此才出现问题,显示A应该为二维的。 解决方法: 先用rgb2gray(I)将h先将I图像转换为灰度矩阵图像,再用medfilt2。 程序后段改为: j=rgb2gray(I);

几种常见空间滤波器MATLAB实现

孤者浪人 提交于 2019-11-30 16:32:29
本文链接:https://blog.csdn.net/LYduring/article/details/80443573 一、目的 实现算术均值滤波器、几何均值滤波器、中值滤波器、修正的阿尔法均值滤波器、自适应中值滤波器,并比较不同滤波器的降噪结果。 二、代码 代码的思路如下: (1)先对原始的电路图先后进行加高斯噪声和椒盐噪声;之后设置滤波器的模板大小为5*5,分别对被噪声污染的图像进行算术均值、几何均值、中值、修正的阿尔法滤波,并输出图像,方便结果比较。 (2)为了比较中值滤波器和自适应中值滤波器的滤波结果,先对原始电路图添加椒盐噪声;接着对噪声图像进行模板大小为5*5的中值滤波;最后对噪声图像进行最大模板为5*5的自适应中值滤波,分别输出滤波后的图像,比较结果。 代码具体实现如下: %******************************************************% %目的:比较几种不同均值滤波器和自适应中值滤波器的去噪声效果 %日期:2018.5.18 %******************************************************% %读入图像 img = imread('img.tif'); figure; subplot(1,3,1); imshow(img); title('原始图像');

imfilter

谁都会走 提交于 2019-11-30 16:22:54
图像处理函数详解——imfilter 功能:对任意类型数组或多维图像进行滤波。 用法:B = imfilter(A,H)    B = imfilter(A,H,option1,option2,...)    或写作g = imfilter(f, w, filtering_mode, boundary_options, size_options) 其中, f为输入图像,w为滤波掩模,g为滤波后图像 。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定。 具体参数选项见下表: 选项 描述 filtering_mode ‘corr’ 通过使用相关来完成,该值为默认。 ‘conv’ 通过使用卷积来完成 boundary_options ‘X’ 输入图像的边界通过用值X(无引号)来填充扩展 其默认值为0 ‘replicate’ 图像大小通过复制外边界的值来扩展 ‘symmetric’ 图像大小通过镜像反射其边界来扩展 ‘circular’ 图像大小通过将图像看成是一个二维周期函数的一个周期来扩展 size_options ‘full’ 输出图像的大小与被扩展图像的大小相同 ‘same’ 输出图像的大小与输入图像的大小相同。这可通过将滤波掩模的中心点的偏移限制到原图像中包含的点来实现