当前位置: 首页 > news >正文

Python与FPGA——局部二值化

文章目录

  • 前言
  • 一、局部二值化
  • 二、Python局部二值化
  • 三、FPGA局部二值化
  • 总结


前言

  局部二值化较全局二值化难,我们将在此实现Python与FPGA的局部二值化处理。


一、局部二值化

  局部二值化就是使用一个窗口,在图像上进行扫描,每扫出9个像素求平均,再和阈值进行比较。如果9个像素的平均值大与等于阈值,就将窗口中心对应的图像像素设置为255,否则就设置为0。

在这里插入图片描述

二、Python局部二值化

  以下虽然是局部二值化处理,但是在此基础上,增加了阈值乘以一个ratio小数,可以调整阈值,实现局部阈值二值化处理。

import numpy as np
import matplotlib.pyplot as plt
img = plt.imread("lenna.png")
gray = 0.299 * img[:, :, 0] + 0.587 * img[:, :, 1] + 0.114 * img[:, :, 2] 
gray = gray * 255#图像是[0-1]--->[0-255]
def local_threshold(gray, ratio, threshold, size=3):h, w = gray.shapem = int((size - 1) / 2)local_image = np.zeros((h, w))for i in range(m, h - m):for j in range(m, w - m):value = np.floor((np.sum(gray[i - m: i + m + 1, j - m: j  + m + 1]) / (size ** 2)) * ratio)if(value <= threshold):local_image[i, j] = 0else:local_image[i, j] = 255return local_image.astype(np.uint8)local_image = local_threshold(gray, 0.9, 128, 3)
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(1, 2, 1)
ax.set_title("gray image")
ax.set_xlabel("width")
ax.set_ylabel("height")
plt.imshow(gray, cmap="gray")
ax = fig.add_subplot(1, 2, 2)
ax.set_title("local image")
ax.set_xlabel("width")
ax.set_ylabel("height")
plt.imshow(local_image, cmap="gray")

在这里插入图片描述

三、FPGA局部二值化

module  ycbcr2binary_local
(input	wire			vga_clk		,//vga时钟input	wire			sys_rst_n	,//复位信号input	wire	[7:0]	y_data		,//灰度处理的图像像素input	wire			rgb_valid	,//vga显示有效区域output	wire	[15:0]	binary_data	//二值化像素
);//shift ram
wire	[7:0]	data_row1	;
wire	[7:0]	data_row2	;
wire	[7:0]	data_row3	;
//3*3像素数据
reg		[7:0]	p11			;
reg		[7:0]	p12			;
reg		[7:0]	p13			;
reg		[7:0]	p21			;
reg		[7:0]	p22			;
reg		[7:0]	p23			;
reg		[7:0]	p31			;
reg		[7:0]	p32			;
reg		[7:0]	p33			;wire	[7:0]	temp	    ;
//Y值有效信号
reg				y_valid		;assign  data_row3 = y_data  ;
//中值拼接565
assign  temp = (p11 + p12 + p13 + p21 + p22 + p23 + p31 + p32 + p33) / 9;//9个像素平均值
assign  binary_data = (temp >= 8'd128) ? 16'hffff: 16'h0000;//比较并设置像素
always@(posedge vga_clk or negedge sys_rst_n)	if(sys_rst_n == 1'b0)y_valid  <=  1'b0  ;elsey_valid  <=  rgb_valid  ;always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)begin{p11,p12,p13}  <=  24'd0  ;{p21,p22,p23}  <=  24'd0  ;{p31,p32,p33}  <=  24'd0  ;endelse  if(y_valid == 1'b1)begin{p11,p12,p13}  <= {p12,p13,data_row1}  ;{p21,p22,p23}  <= {p22,p23,data_row2}  ;{p31,p32,p33}  <= {p32,p33,data_row3}  ;end	elsebegin{p11,p12,p13}  <=  24'd0  ;{p21,p22,p23}  <=  24'd0  ;{p31,p32,p33}  <=  24'd0  ;end	
//移位寄存器
shift_ram_gen  shift_ram_gen_inst
(.clock 		(vga_clk	),.shiftin	(data_row3	),.shiftout 	(			),.taps0x 	(data_row2	),.taps1x 	(data_row1	)
);endmodule

在这里插入图片描述

  在FPGA中,小编没有将阈值乘上一个小数,如果要和Python实现一致,你也可以尝试加上。


总结

  图像二值化也就告一段落,二值化比较基础,下一章节聊聊sobel边缘检测。还是一样,sobel是谁不重要,重要的是要用他去完成sobel检测。敬请期待。

相关文章:

Python与FPGA——局部二值化

文章目录 前言一、局部二值化二、Python局部二值化三、FPGA局部二值化总结 前言 局部二值化较全局二值化难&#xff0c;我们将在此实现Python与FPGA的局部二值化处理。 一、局部二值化 局部二值化就是使用一个窗口&#xff0c;在图像上进行扫描&#xff0c;每扫出9个像素求平均…...

shell文本处理工具-shell三剑客1

shell脚本常用基础命令2 shell脚本常用基础命令 shell脚本常用基础命令2一、grep用法二、sed用法2.1p参数 &#xff08;显示&#xff09;n参数&#xff08;只显示处理过的行&#xff09; 文本处理三剑客&#xff1a;grep sed awk 一、grep用法 grep -E egrep (扩展搜索正文表…...

函数的传入参数-传参定义

基于函数的定义语法&#xff1a; def 函数名&#xff08;传入参数&#xff09;函数体return 返回值 可以有如下函数定义&#xff1a; def add(x,y):return xyprint(f"{x} {y}的结果是&#xff1a;{result}") 实现了&#xff0c;每次计算的是xy&#xff0c;而非…...

主流接口测试框架对比,究竟哪个更好用

公司计划系统的开展接口自动化测试&#xff0c;需要我这边调研一下主流的接口测试框架给后端测试&#xff08;主要测试接口&#xff09;的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求&#xff0c;看哪个框架更适合我们。 需求 1、接口编写…...

常用python模板

1.简单脚本模板 def main():#代码逻辑if __name__"__main__":main() 2.类定义模板 Class Myclass:def __init__(self,parameter):self.parameterparameterdef my_method(self):#方法逻辑 3.函数定义模板 def my_function(parameter):#代码逻辑return result 4.…...

53. 最大子数组和(力扣LeetCode)

文章目录 53. 最大子数组和题目描述暴力&#xff08;运行超时&#xff09;贪心 53. 最大子数组和 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组…...

如何远程SSH连接在家的服务器主机

当您需要通过SSH远程连接到家里的服务器主机时&#xff0c;以下是更详细的实施步骤&#xff1a; 1. 确保服务器主机已开启SSH服务 安装SSH服务&#xff1a;首先&#xff0c;确保您的服务器主机上安装了SSH服务。根据您的操作系统&#xff0c;您可以使用相应的包管理器来安装。…...

【亲测有效】解决三月八号ChatGPT 发消息无响应!

背景 今天忽然发现 ChatGPT 无法发送消息&#xff0c;能查看历史对话&#xff0c;但是无法发送消息。 可能的原因 出现这个问题的各位&#xff0c;应该都是点击登录后顶部弹窗邀请 [加入多语言 alapha 测试] 了&#xff0c;并且语言选择了中文&#xff0c;抓包看到 ab.chatg…...

vue结合vue-electron创建应用程序

这里写自定义目录标题 安装electron第一种方式&#xff1a;vue init electron-vue第二种方式&#xff1a;vue add electron-builder 启动electron调试功能&#xff1a;background操作和使用1、覆盖窗口的菜单上下文、右键菜单2、监听关闭事件、阻止默认行为3、创建悬浮窗口4、窗…...

【C++】STL(二) string容器

一、string基本概念 1、本质 string是C风格的字符串&#xff0c;而string本质上是一个类 string和char * 区别&#xff1a; char * 是一个指针 string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char*型的容器。 2、特点 1、stri…...

PyCM:Python中的混淆矩阵库

PyCM&#xff1a;Python中的混淆矩阵库 在机器学习和数据科学领域&#xff0c;评估模型的性能是至关重要的。混淆矩阵是一种常用的评估工具&#xff0c;用于可视化和量化分类模型的预测结果。PyCM是一个开源的Python库&#xff0c;提供了丰富的功能来计算和分析混淆矩阵。本文将…...

Day22:安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用

目录 开发环境 数据导入-mysql架构&库表列 数据库操作-mysqli函数&增删改查 数据接收输出-html混编&超全局变量 第三方插件引用-js传参&函数对象调用 完整源码 思维导图 PHP知识点&#xff1a; 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0…...

IOS面试题object-c 61-70

61. 阐述isKindOfClass、isMemberOfClass、selector作用分别是什么&#xff1f;isKindOfClass&#xff1a;作用是某个对象属于某个类型或者继承自某类型。 isMemberOfClass&#xff1a;某个对象确切属于某个类型。 selector&#xff1a;通过方法名&#xff0c;获取在内存中的函…...

Git指令reset的参数soft、mixed与hard三者之间的区别

主要内容 reset默认不写参数&#xff0c;与使用mixed参数含义一样 为了描述简洁&#xff0c;使用下图说明&#xff1a; #mermaid-svg-LtChquRXlEV1j6og {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LtChquRXlEV1j…...

RGMII 接口调试

目录 硬件检查 软件检查 调试步骤 硬件检查 硬件工程师检查原理图和PCB&#xff0c;核查RGMII线路连接是否正确&#xff0c;PHY的 TX连接对端 RX&#xff0c;PHY的RX连接对端TX&#xff0c;原理图上以引脚序号引脚名 引脚类型(输入还是输出)逐一核查RGMII接口各个网络&#…...

Ubuntu 24.04 抢先体验换国内源 清华源 阿里源 中科大源 163源

Update 240307:Ubuntu 24.04 LTS 进入功能冻结期 预计4月25日正式发布。 Ubuntu22.04换源 Ubuntu 24.04重要升级daily版本下载换源步骤 (阿里源)清华源中科大源网易163源 Ubuntu 24.04 LTS&#xff0c;代号 「Noble Numbat」&#xff0c;即将与我们见面&#xff01; Canonica…...

软件设计模式:模板方法模式

1. 简介 模板方法模式是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。这样&#xff0c;可以在不改变算法结构的情况下&#xff0c;重新定义算法中的某些步骤。 2. 使用条件 模板方法模式适用于以下情况&#xff1a; 算法…...

【算法】Hash存储——开放寻址法

模拟散列表 维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b; Q x&#xff0c;询问整数 x是否在集合中出现过&#xff1b; 现在要进行 N次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&am…...

STM32CubeIDE基础学习-STM32CubeIDE软件程序下载方法

STM32CubeIDE基础学习-STM32CubeIDE软件代码下载方法 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件代码下载方法前言第1章 代码下载第2章 下载器固件更新总结 前言 编写完代码&#xff0c;一般都会选择在线下载程序的方式进行验证该程序是否正确&#xff0c;如果发现结果和…...

LeetCode 174.地下城游戏 Python题解

地下城游戏 # 地下城游戏 """ 恶魔们抓住了公主并将她关在了地下城dungeon的右下角。地下城是由mxn个房间组成的二维网格。我们英勇的骑士最初被安置在左上角的房间里&#xff0c; 他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数…...

三菱伺服MR Configurator2试运行全攻略:从JOG到定位运行一键搞定

三菱伺服MR Configurator2试运行全攻略&#xff1a;从JOG到定位运行一键搞定 在工业自动化领域&#xff0c;伺服系统的精准调试往往决定着整条产线的运行效率。作为三菱电机旗下的核心产品&#xff0c;三菱伺服系统凭借其高响应性和稳定性&#xff0c;已成为众多自动化设备制造…...

避坑指南:Ascend 310芯片+CANN工具包在麒麟系统下的5个常见安装错误

Ascend 310芯片CANN工具包在麒麟系统下的5个典型安装陷阱与解决方案 当Ascend 310芯片遇上麒麟操作系统&#xff0c;这种国产硬件的黄金组合本应带来无缝的开发体验&#xff0c;但实际部署中总有几个"暗礁"让开发者措手不及。不同于常规安装教程&#xff0c;本文将直…...

5分钟掌握llama-cpp-python:本地AI模型部署终极指南

5分钟掌握llama-cpp-python&#xff1a;本地AI模型部署终极指南 【免费下载链接】llama-cpp-python Python bindings for llama.cpp 项目地址: https://gitcode.com/gh_mirrors/ll/llama-cpp-python 想要在个人电脑上运行大型语言模型却不知从何入手&#xff1f;llama-c…...

别再忍受龟速下载了!保姆级教程:为Conda配置清华/阿里云镜像源(Windows/Mac/Linux全平台)

告别Conda下载卡顿&#xff1a;国内镜像源配置全攻略 每次看到Conda下载进度条像蜗牛一样爬行&#xff0c;是不是想砸键盘的心都有了&#xff1f;国内开发者使用默认源下载Python包时&#xff0c;经常遭遇三位数的下载速度&#xff0c;一个简单的numpy安装可能就要消耗半小时咖…...

Windows 正版系统安装(重装) - Win10(微星主板 - MSI)

一、启动盘制作 本文章为正版 Windows 安装系统流程&#xff0c;安装版本为 Windows 10 家庭版 官方免费版本&#xff01; Mac 制作 Win10 启动盘&#xff08;不推荐&#xff0c;因为 U盘 无法格式化为 NTFS&#xff0c;以前是可以选择 Microsoft NTFS 格式的&#xff0c;但是…...

5个步骤彻底解决GTA5在线模式崩溃问题:YimMenu防崩溃菜单完全指南

5个步骤彻底解决GTA5在线模式崩溃问题&#xff1a;YimMenu防崩溃菜单完全指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trend…...

深入解析CoT蒸馏与GRPO:如何高效训练具备推理能力的小模型

1. 从零理解CoT蒸馏&#xff1a;让大模型的"思考能力"装进小模型 第一次听说CoT蒸馏这个概念时&#xff0c;我正被一个实际问题困扰&#xff1a;客户需要在智能音箱上部署数学解题功能&#xff0c;但GPT-4的API调用成本高得吓人。当时尝试直接用7B小模型微调&#xf…...

探索数据中的数学之美:PySR符号回归工具让复杂规律触手可及

探索数据中的数学之美&#xff1a;PySR符号回归工具让复杂规律触手可及 【免费下载链接】PySR High-Performance Symbolic Regression in Python and Julia 项目地址: https://gitcode.com/gh_mirrors/py/PySR 你是否曾面对海量数据却难以理解其中的内在规律&#xff1f…...

华三交换机端口隔离配置(VLAN内二层互访隔离)

一、前言 华三&#xff08;H3C&#xff09;交换机的端口隔离是一种关键的二层端口级控制技术&#xff0c;它能在同一 VLAN 内部实现端口间的二层互访隔离&#xff0c;有效抑制广播风暴、提升网络安全与用户隔离性。 核心原理是将指定端口加入隔离组&#xff0c;组内端…...

2026年,这家大型快拼箱源头工厂直销厂家,究竟有何独特之处?

在快拼箱行业蓬勃发展的2026年&#xff0c;众多厂家如雨后春笋般涌现&#xff0c;但衡水贝客科技有限公司&#xff08;简称贝客房屋&#xff09;却凭借其独特的优势脱颖而出&#xff0c;成为行业内备受瞩目的大型快拼箱源头工厂直销厂家。接下来&#xff0c;让我们深入探究贝客…...