首页 > 编程语言 >对焦取框算法

对焦取框算法

时间:2024-03-25 13:33:16浏览次数:36  
标签:box 取框 image cv2 对焦 算法 图像 new sum

 1 import cv2
 2 import numpy as np
 3 
 4 # 读取原始图像
 5 original_image = cv2.imread('train16.png')
 6 
 7 # 高斯模糊处理
 8 blurred_image = cv2.GaussianBlur(original_image, (5, 5), 0)
 9 
10 # 计算新图像
11 new_image = cv2.subtract(original_image, blurred_image)
12 
13 # 转换新图像为灰度图
14 gray_new_image = cv2.cvtColor(new_image, cv2.COLOR_BGR2GRAY)
15 
16 # 计算图像的形状
17 M, N = gray_new_image.shape
18 
19 # 计算新图像的灰度加权质心
20 sum_intensity = np.sum(gray_new_image)
21 
22 # 计算加权和
23 sum_x = 0.0
24 sum_y = 0.0
25 
26 for y in range(M):
27     for x in range(N):   
28         sum_x += x * gray_new_image[y, x]
29         sum_y += y * gray_new_image[y, x]
30 
31 x_c = int(sum_x / sum_intensity)
32 y_c = int(sum_y / sum_intensity)
33 
34 # 设置框的大小参数
35 box_scale = 0.45  # 框相对于图像大小的比例
36 
37 # 计算框的大小
38 box_width = int(N * box_scale)
39 box_height = int(M * box_scale)
40 
41 # 计算框的左上角和右下角坐标
42 x1 = max(0, x_c - box_width // 2)
43 y1 = max(0, y_c - box_height // 2)
44 x2 = min(N, x_c + box_width // 2)
45 y2 = min(M, y_c + box_height // 2)
46 
47 # 在原始图像上同时标注质心和框
48 image_with_center_and_box = original_image.copy()
49 image_with_center_and_box = cv2.circle(image_with_center_and_box, (x_c, y_c), 5, (255, 0, 0), -1)# 在质心位置画一个蓝色实心圆
50 image_with_center_and_box = cv2.rectangle(image_with_center_and_box, (x1, y1), (x2, y2), (0, 255, 0), 2)  # 在框的位置画一个绿色矩形

对输入的图像进行高斯模糊处理,计算出新图像后,找到图像的灰度加权质心,并在该质心周围绘制一个矩形框,用于标记图像中的重要区域。《

Analysis and comparison of automatic image focusing algorithms in digital
image processing

blurred_image = cv2.GaussianBlur(original_image, (5, 5), 0): 对原始图像进行高斯模糊处理,使用5x5的内核大小。

new_image = cv2.subtract(original_image, blurred_image): 计算原始图像与模糊图像的差异,得到新的图像。

gray_new_image = cv2.cvtColor(new_image, cv2.COLOR_BGR2GRAY): 将新图像转换为灰度图像,方便后续处理。

获取图像的形状信息:

M, N = gray_new_image.shape: 获取灰度图像的高度和宽度。

计算新图像的灰度加权质心:

遍历图像的每个像素,计算加权和以及加权质心的坐标。

 

计算框的大小和位置:

box_scale = 0.45: 设置框相对于图像大小的比例。
根据加权质心的坐标和比例计算框的大小。
计算框的左上角和右下角坐标,确保框在图像范围内。

标签:box,取框,image,cv2,对焦,算法,图像,new,sum
From: https://www.cnblogs.com/cupwym/p/18094180

相关文章

  • 数据结构算法系列----对动态规划的感悟
    简介:   最近我一直在做和复习动态规划的题目,对动态规划有了一些新的理解和感悟。本文就是基于最近做的一些题目写的。一、动态规划的题目形式和选择   当题目是对于求某一串数字或者字符的最值时,一般就回想到三种解法,dfs暴搜、动态规划、贪心。在这三个之中显......
  • 用MATLAB实现nsgaII算法求解多目标问题
    一、nsgaII算法简介NSGA-II(非支配排序遗传算法II)是一种多目标优化算法,2000年由Srinivas,N.,Deb,Kalyanmoy提出,是一种效果非常好的多目标优化算法,尤其是其中的快速非支配排序,极大提高了算法的运行效率。其基本步骤如下:1.初始化种群:随机生成一个包含多个个体的初始种群。......
  • python实现时序平滑算法SG滤波器
    ......
  • m基于log-MPA检测算法的SCMA通信链路matlab误码率仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       稀疏码多址接入(SparseCodeMultipleAccess,SCMA)是一种非正交多址接入技术,它通过引入码本的稀疏性来实现多用户的高效接入。在SCMA系统中,多用户共享相同的时频资源,每个用户从自己的码本......
  • 代码随想录算法训练营第五十五天 | 583. 两个字符串的删除操作, 72. 编辑距离
    72.编辑距离 已解答中等 相关标签相关企业 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符 示例1:输入:word1="horse"......
  • 栅格地图路径规划:基于霸王龙优化算法(Tyrannosaurus optimization,TROA)的机器人路径规划
     一、机器人路径规划介绍移动机器人(Mobilerobot,MR)的路径规划是移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大......
  • 栅格地图路径规划:基于螳螂搜索算法(Mantis Search Algorithm,MSA)的机器人路径规划(提供MA
        一、机器人路径规划介绍移动机器人(Mobilerobot,MR)的路径规划是移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人......
  • JVM的垃圾回收算法--有哪些垃圾回收算法?哪些垃圾收集器?
    三大假说弱分代假说(WeakGenerationalHypothesis):绝大多数对象都是朝生夕灭的。强分代假说(StrongGenerationalHypothesis):熬过越多次垃圾收集过程的对象就越难以消亡。跨代引用假说(IntergenerationalReferenceHypothesis):跨代引用相对于同代引用来说仅占极少数。垃圾收集器......
  • lua lru算法
    --定义一个双向链表节点localNode={}Node.new=function(key,value)localnode={}node.key=keynode.value=valuenode.prev=nilnode.next=nilreturnnodeend--定义LRU缓存类localLRUCache={}LRUCache.new=function(m......
  • 数学算法(算法竞赛、蓝桥杯)--判定质数试除法
    1、B站视频链接:G06判定质数试除法_哔哩哔哩_bilibili题目链接:【深基7.例2】质数筛-洛谷#include<bits/stdc++.h>usingnamespacestd;boolis_prime(intx){ if(x==1)return0;//特判1不是质数 for(inti=2;i*i<=x;i++){//枚举小的那个到根号n即可 if(x%i==0......