拉普拉斯算子

%function PicOut=Lap_edge(PicInput,thresh)           
PicInput=imread(‘c:/boat.png‘);
thresh=45;
% 本程序能够将BMP格式的黑白灰度图像用拉普拉斯算子进行边缘检测
% 生物图像处理作业2
% 格式为 a=Lap_edge(PicInput,thresh) 或者嵌套为 Lap_edge(imread(‘rice.tif‘),15)
% thresh参数可自选,对于rice.tif这张图来说最合适的值大约为14到18
% 使用例子:PicInput=imread(‘rice.tif‘);
%           a=Lap_edge(PicInput,15);
%---------------- BEGIN CODE ----------------

% 一,原图像预处理,读入黑白图片并确定长和宽
[m,n]=size(PicInput);                            %确定图片的长和宽

% 二,拉普拉斯变换预处理,定义镜框矩阵和输出矩阵
r=m+2;                                           %把图片的长和宽各加2
c=n+2;
PicFrame=zeros(r,c);                             %定义二维数组“PicFrame”,长、宽比“Input”各多2,成为镜框的尺寸
b=zeros(m,n);                                    %定义滤波后的数组

% 三,拉普拉斯运算的三个矩阵
Temp=zeros(3);                                   %定义三阶方阵“Temp”,为临时矩阵
op=[0 -1 0;-1 4 -1;0 -1 0];                      %定义拉普拉斯算子
Result=zeros(3);                                 %定义三阶方阵“Result”,为运算结果矩阵

% 四,原图像矩阵处理,做一个“像框”                                   
%PicFrame(2:m+1,2:n+1)=PicInput;                  %把原图的矩阵放到新的矩阵“PicFrame”中心,它的第一行、最后一行、第一列、
 PicFrame(2:m+1,2:n+1)=PicInput;                                                %最后一列都是“0”,即原图矩阵周围有一圈“0”的边缘,好像给图像加一个像框
 figure,
 imshow(PicFrame,[]);
PicFrame(1,:)=PicFrame(2,:);                     %把第二行的值赋给第一行
PicFrame(r,:)=PicFrame(r-1,:);                   %把倒数第二行的值赋给最后一行
PicFrame(:,1)=PicFrame(:,2);                     %把第二列的值赋给第一列
PicFrame(:,c)=PicFrame(:,c-1);                   %把倒数第二列的值赋给最后一列
figure,imshow(PicFrame,[]);
% 五,用拉普拉斯算子进行滤波
for i=1:m
    for j=1:n
        Temp=PicFrame(i:i+2,j:j+2);             %从“PicFrame”矩阵中依次取出三阶方阵,赋值给临时矩阵“Temp”
        Result=Temp.*op;                        %临时矩阵与拉普拉斯算子“点乘”,赋值给结果矩阵“Result”
        b(i,j)=sum(sum(Result));   
                                                %结果矩阵中“十”字线上元素相加,赋值给输出矩阵中相应的位置,
                                                %即临时矩阵中心元素所对应的位
    end
end
figure,imshow(b);
% 六,设定阈值,将图像二值化
% thresh=1.618*mean2(abs(b))    可用黄金分割的比例选阈值优点是边缘清晰                                             
e=repmat(logical(uint8(0)),m,n);                 %创建数组
e(find(b>thresh))=1;                             %阈值判断二值化
PicOut=e;                                        %函数输出
figure,subplot(1,2,1),imshow(PicInput);           %显示原图片
title(‘原图像‘);
subplot(1,2,2),imshow(e);                        %显示拉普拉斯边缘检测后的图片
title(‘自编函数边缘检测后的图像‘);
%----------------END OF CODE ----------------

图像开操作- -
Tag: matlab

function open0207(I,thresh,element)

% 本程序能够对灰度图像先进行二值化,再进行开操作
% 本程序先调用腐蚀函数,再调用膨胀函数,实现开操作

%  作者;archiless lorder        
% 一,调用腐蚀函数
[C,B]=erode0207simple(I,thresh,element);

% 二,调用膨胀函数
F=dilate0207simple(C,1,element);

% 三,输出图像
figure,subplot(221),imshow(I),title(‘原图像‘);
subplot(222),imshow(B),title(‘二值化后的图像‘);
subplot(223),imshow(F),title(‘开操作后的图像‘);

图像闭操作- -
Tag: matlab    图像    close

function close0207(I,thresh,element)

% 本程序能够对灰度图像先进行二值化,再进行闭操作
% 本程序先调用膨胀函数,再调用腐蚀函数,实现闭操作

%  作者;archiless lorder        
% 一,调用膨胀函数
[F,E]=dilate0207simple(I,thresh,element);

% 二,调用腐蚀函数
C=erode0207simple(F,1,element);

% 三,输出图像
figure,subplot(221),imshow(I),title(‘原图像‘);
subplot(222),imshow(E),title(‘二值化后的图像‘);
subplot(223),imshow(C),title(‘闭操作后的图像‘);

时间: 2024-10-21 02:44:09

拉普拉斯算子的相关文章

数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波

拉普拉斯算子进行二维卷积计算,线性锐化滤波 # -*- coding: utf-8 -*- #线性锐化滤波-拉普拉斯算子进行二维卷积计算 #code:[email protected] import cv2 import numpy as np from scipy import signal fn="test6.jpg" myimg=cv2.imread(fn) img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) srcimg=np.array(im

图像处理-线性滤波-2 图像微分(1、2阶导数和拉普拉斯算子)

更复杂些的滤波算子一般是先利用高斯滤波来平滑,然后计算其1阶和2阶微分.由于它们滤除高频和低频,因此称为带通滤波器(band-pass filters). 在介绍具体的带通滤波器前,先介绍必备的图像微分知识. 1 一阶导数 连续函数,其微分可表达为 ,或                         (1.1) 对于离散情况(图像),其导数必须用差分方差来近似,有 ,前向差分 forward differencing                  (1.2)  ,中心差分 central

灰度图像--图像增强 拉普拉斯算子

学习DIP第34天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

paper 109 :图像处理中的拉普拉斯算子

1.基本理论 拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性.一个二维图像函数 的拉普拉斯变换是各向同性的二阶导数,定义为:   为了更适合于数字图像处理,将该方程表示为离散形式:    另外,拉普拉斯算子还可以表示成模板的形式,如图5-9所示.图5-9(a)表示离散拉普拉斯算子的模板,图5-9(b)表示其扩展模板,图5-9(c)则分别表示其他两种拉普拉斯的实现模板.从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮.因为图像中的边缘

使用二阶微分锐化图像(拉普拉斯算子)基本原理及Python实现

1. 拉普拉斯算子 1.1 简介 一种典型的各向同性的微分算子,可用于检测图像中灰度图片的区域 $$ \nabla^{2} f=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} $$ 根据上述的差分近似可以推导出 $$ \nabla^{2} f(x, y)=f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)-4 f(x, y) $$ 1.2 锐化过程 使用拉普拉斯过滤

Opencv拉普拉斯算子做图像增强

Opencv拉普拉斯算子——图像增强 #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; //拉普拉斯处理 cv::Mat laplaceMat(cv::Mat imgParam); int main(int argc, char *argv[]) { Mat image = imread("D:\\images\\JK$DPF6315~A4G

OpenCV-跟我一起学数字图像处理之拉普拉斯算子

Laplace算子和Sobel算子一样,属于空间锐化滤波操作.起本质与前面的Spatial Filter操作大同小异,下面就通过Laplace算子来介绍一下空间锐化滤波,并对OpenCV中提供的Laplacian函数进行一些说明. 数学原理 离散函数导数 离散函数的导数退化成了差分,一维一阶差分公式和二阶差分公式分别为, Laplace算子的差分形式 分别对Laplace算子x,y两个方向的二阶导数进行差分就得到了离散函数的Laplace算子. 在一个二维函数f(x,y)中,x,y两个方向的二阶

拉普拉斯算子网格形变

网格顶点的拉普拉斯坐标定义为 ,公式中di代表顶点Vi的一环邻域顶点数量 网格的拉普拉斯坐标用矩阵表示, ,  然后通过网格的拉普拉斯坐标求解为稀疏线性方程组便可以得到形变后的网格顶点 初始化拉普拉斯矩阵 1 void mainNode::InitLpls() 2 { 3 int vertexNumber = m_vecAllVertex.size(); 4 //计算拉普拉斯坐标.方式一 5 for (int i = 0; i < vertexNumber; i++) 6 { 7 pVERTEX

2020/02/15 理解图论中的拉普拉斯算子与拉普拉斯矩阵

学习资料 知乎-[其实贼简单]拉普拉斯算子和拉普拉斯矩阵 CSDN-我见过最清晰的–理解梯度,散度,旋度 原文地址:https://www.cnblogs.com/Research-XiaoEMo/p/12311268.html