写一个c语言程序 实现对一个二维矩阵的高通滤波 高斯平滑函数用【0.25,0.5,0.25】

时间: 2024-04-19 18:24:18 浏览: 18
下面是一个用C语言实现的高通滤波程序,使用了高斯平滑函数[0.25, 0.5, 0.25]对二维矩阵进行滤波: ```c #include <stdio.h> // 定义矩阵的大小 #define ROWS 3 #define COLS 3 // 高斯平滑函数 double gaussian_smooth[ROWS] = {0.25, 0.5, 0.25}; // 二维矩阵高通滤波函数 void high_pass_filter(int matrix[][COLS], int result_matrix[][COLS]) { int i, j, k; int sum; for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { sum = 0; for (k = 0; k < ROWS; k++) { sum += matrix[i][j+k] * gaussian_smooth[k]; } result_matrix[i][j] = matrix[i][j] - sum; } } } int main() { int matrix[ROWS][COLS] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int result_matrix[ROWS][COLS]; high_pass_filter(matrix, result_matrix); printf("Original Matrix:\n"); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } printf("\nResult Matrix after High Pass Filtering:\n"); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { printf("%d ", result_matrix[i][j]); } printf("\n"); } return 0; } ``` 这个程序通过`high_pass_filter`函数对二维矩阵进行高通滤波。在`main`函数中,我们定义了一个3x3的二维矩阵`matrix`,然后调用`high_pass_filter`函数对其进行滤波,并将结果保存在`result_matrix`中。最后,程序会输出原始矩阵和滤波后的结果矩阵。 请注意,这里使用了简化的高斯平滑函数[0.25, 0.5, 0.25],你可以根据需要修改`gaussian_smooth`数组来使用其他的高斯平滑函数。另外,此程序仅演示了高通滤波的基本原理,并没有考虑边界处理和图像处理等更复杂的情况。如果你需要进行更复杂的图像处理,可能需要使用专门的图像处理库,如OpenCV等。

相关推荐

最新推荐

recommend-type

C语言中二维数组作为函数参数来传递的三种方法

主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
recommend-type

单片机C语言程序设计:T0控制LED实现二进制计数

说明:本例对按键的计数没有使用查询法,没有使用外部中断函数,没有使用定时或计数中断函数。而是启用了计数器,连接在 T0 引脚的按键每次按下时,会使计数寄存器的值递增,其值通过 LED以二进制形式显示
recommend-type

C语言实现二进制文件读写详解

文章先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。
recommend-type

C语言程序设计实现高斯消元法解方程高斯消元法解方程

高斯消去法的解题思路:反代 来求得所要的答案.矩阵的基本列运算规则为:(1)任一列均可乘以一非零的常数;(2)将任一列乘以一常数后加到其他列;(3)可任意对调任两列。 第1步消元——在增广矩阵(A,b)第一列...
recommend-type

【图像压缩】 GUI矩阵的奇异值分解SVD灰色图像压缩【含Matlab源码 4359期】.zip

Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

云原生架构与soa架构区别?

云原生架构和SOA架构是两种不同的架构模式,主要有以下区别: 1. 设计理念不同: 云原生架构的设计理念是“设计为云”,注重应用程序的可移植性、可伸缩性、弹性和高可用性等特点。而SOA架构的设计理念是“面向服务”,注重实现业务逻辑的解耦和复用,提高系统的灵活性和可维护性。 2. 技术实现不同: 云原生架构的实现技术包括Docker、Kubernetes、Service Mesh等,注重容器化、自动化、微服务等技术。而SOA架构的实现技术包括Web Services、消息队列等,注重服务化、异步通信等技术。 3. 应用场景不同: 云原生架构适用于云计算环境下的应用场景,如容器化部署、微服务
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。