自动对焦搜索算法(未完)

news/2025/1/7 21:57:05/

自动对焦搜索算法

先黄金搜索再爬山搜索

1、爬山搜索法
在这里插入图片描述
在这里插入图片描述

2、黄金搜索法
在这里插入图片描述
在这里插入图片描述
3、代码

// AutoFocus.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>
#include <vector>
#include <math.h>
#include <halconcpp.h>using namespace HalconCpp;
using namespace std;vector<int> GoldenSectionSearch(double m[], int a, int b, double k, int T);
int HillClimbingSearch(double m[], int c, int d);
int EvaluationImage(int k);//自动对焦主函数
int _tmain(int argc, _TCHAR* argv[])
{double m[30] = { 0.5, 1.7, 3.4, 5.5, 9.7, 13.5, 17.2, 20.6, 23.1, 25.9, 32.3, 38.7, 43.3, 50.5, 44.1, 37.7, 29.3, 22.7, 19.3, 13.6, 11.4, 8.5, 6.6, 4.7, 3.1, 1.9, 0.9, 0.7 ,0.6, 0.4 };int a = 0, b = 29;vector<int> tmp;tmp = GoldenSectionSearch(m,a,b,0.618,5);cout << tmp[0] << tmp[1] << endl;int finalPosition = HillClimbingSearch(m, tmp[0], tmp[1]);cout << finalPosition << endl;system("pause");return 0;
}//黄金分割粗搜索阶段
/*
参数:已经确定的最大可调范围【a,b】;
一个脉冲移动1um;一个脉冲距离l;
黄金分割比例k=0.618;
已经确定的区间阈值T;
返回值:一个区间 vector()
*/
vector<int> GoldenSectionSearch(double m[], int a, int b, double k, int T)
{vector<int> range;if (abs(b - a) < T){range.push_back(a);range.push_back(b);return range;}int c = b - k*(b - a);int d = a + k*(b - a);if (m[c] > m[d]){b = d;return GoldenSectionSearch(m, a, b, k, T);}else{a = c;return GoldenSectionSearch(m, a, b, k, T);}return range;
}//爬山精细化搜索阶段
/*
参数:区间【c,d】;
最小脉冲数s;
*/
int HillClimbingSearch(double m[], int c, int d)
{double max = m[c];for (int i = 0; i < abs(c - d); i++){double tmp = m[++c];if (tmp < max){return --c;}max = tmp;}return -1;
}//图像评价函数--方差函数--Halocn转C++
int EvaluationImage(int k)
{// Local iconic variablesHObject  ho_Image;HObject  ho_GrayImage, ho_Regions, ho_RegionTrans, ho_ROI;HObject  ho_LU, ho_LD, ho_RU;// Local control variablesHTuple  hv_Width, hv_Height, hv_Row, hv_Column;HTuple  hv_Phi, hv_Length1, hv_Length2, hv_Mean, hv_Deviation;ReadImage(&ho_Image, "F:/7号屏/W/20200923(较虚焦,实验平台,VP101M)-7号屏-5-W255-曝光时间20ms-OPT平面光源(10)-国产镜头(光圈5.6).bmp");Rgb1ToGray(ho_Image, &ho_GrayImage);GetImageSize(ho_GrayImage, &hv_Width, &hv_Height);Threshold(ho_GrayImage, &ho_Regions, 50, 80);ShapeTrans(ho_Regions, &ho_RegionTrans, "convex");SmallestRectangle2(ho_RegionTrans, &hv_Row, &hv_Column, &hv_Phi, &hv_Length1, &hv_Length2);GenRectangle2(&ho_ROI, hv_Row, hv_Column, hv_Phi, hv_Length1 / 5, hv_Length2 / 5);GenRectangle2(&ho_LU, hv_Row - (0.6*hv_Length2), hv_Column - (0.6*hv_Length1), hv_Phi,hv_Length1 / 5, hv_Length2 / 5);Union2(ho_ROI, ho_LU, &ho_ROI);GenRectangle2(&ho_LD, hv_Row + (0.6*hv_Length2), hv_Column - (0.6*hv_Length1), hv_Phi,hv_Length1 / 5, hv_Length2 / 5);Union2(ho_ROI, ho_LD, &ho_ROI);GenRectangle2(&ho_RU, hv_Row - (0.6*hv_Length2), hv_Column + (0.6*hv_Length1), hv_Phi,hv_Length1 / 5, hv_Length2 / 5);Union2(ho_ROI, ho_RU, &ho_ROI);GenRectangle2(&ho_LU, hv_Row + (0.6*hv_Length2), hv_Column + (0.6*hv_Length1), hv_Phi,hv_Length1 / 5, hv_Length2 / 5);Union2(ho_ROI, ho_LU, &ho_ROI);Intensity(ho_ROI, ho_GrayImage, &hv_Mean, &hv_Deviation);return hv_Deviation.I();
}

http://www.ppmy.cn/news/790376.html

相关文章

摄像头自动对焦

聚焦评价函数 实现自动对焦的关键

Camera自动对焦

private MyAutoFocus mAutoFocus new MyAutoFocus(); //自动对焦方法class MyAutoFocus implements AutoFocusCallback{SuppressLint("NewApi")public void onAutoFocus(boolean success, Camera camera) {if(mCamera.getParameters().getFocusAreas() ! null)for(A…

单次自动对焦(ONE SHOT)、人工智能自动对焦(AI FOCUS)、人工智能伺服自动对焦(AI SERVO)的区别

单次自动对焦&#xff08;one shot&#xff09;是最为常用的。这种模式的工作过程通过半按快门来启动&#xff0c;在焦点未对准确前&#xff0c;对焦过程一直在继续。一旦处理器认为焦点准确以后&#xff0c;只要将快门完全按下就完成了一次拍摄过程&#xff0c;同时自动对焦系…

camera 自动对焦手动对焦

基础内容可参考 自动对焦系统概述|Camera https://jingyan.baidu.com/article/22a299b5c882a29e19376aad.html 对焦框坐标基本概念&#xff1a; Android Camera2之 手动点击区域对焦 - 简书 Camera2点击对焦实现 - mydddfly - 博客园 本文主要总结自己开发过程中遇到的各…

网络编程3——TCP Socket实现的客户端服务器通信完整代码(详细注释帮你快速理解)

文章目录 前言一、理论准备Socket套接字是什么TCP协议的特点 二、TCP 流套接字提供的APIServerSocket APISocket API 三、代码实现请求响应式 客户端服务器服务器客户端疑惑解答为什么服务器进程需要手动指定端口号而客户端进程不需要为什么客户端中的服务器IP与端口号是"…

Android:安卓开发采用Volley网络框架+MySQL数据库,实现从服务器获取数据并展示完成记单词APP

一、功能与要求 实现功能&#xff1a;设计一个记单词APP。服务器采用Tomcat&#xff0c;数据库采用Mysql。实现用户的注册登录功能以及单词的增删改查。 指标要求&#xff1a;实现UI布局&#xff1b;将系统数据保存到Mysql数据库中&#xff0c;并采用Volley网络框架实现从服务…

技嘉 H310M S2 i3-8100电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板技嘉 H310M S2 台式电脑 处理器英特尔 Core i3-8100 3.60GHz 四核已驱动 内存16 GB ( KLEVV DDR4 2400MHz / 金士顿 DDR4 2400MHz )已驱动 硬盘…

Windows10 蓝屏 DRIVER_IRQL_NOT_LESS_OR_EQUAL (vfilter.sys)的可能解决方法

早上我的笔记本从休眠中开机的时候突然出现了蓝屏,这个蓝屏在前几天出现过了。两次提示的终止代码都一样。我的笔记本型号是DELL XPS15 9560 我的笔记本配置: 类别型号内存16GB DDR4 2666 内存(KLEVV)显卡NVIDIA GeForce GTX 1050硬盘PC300 NVMe SK hynix 256GB系统版本Window…