【算法积累】找到前0.1%最大值的位置/MATLAB
2022/2/26 12:21:28
本文主要是介绍【算法积累】找到前0.1%最大值的位置/MATLAB,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 前言
- 1. Problem
- 2. Solution
前言
为了提高编程能力,决定对日常遇到的一些编程问题做一个积累,以供今后查阅
1. Problem
在数字图像处理实践实验一中,要求复现何凯明的暗通道去雾算法,其中计算大气亮度这一步骤中。
要求:
记录暗通道图中灰度最大的前 0.1%的像素所在位置,把带雾图像在这些位置中分别求出三个通道最大的灰度值作为大气亮度。
2. Solution
首先,找到前0.1%大的灰度值像素所在位置。
- 初始化位置储存变量Maxpos。
- 找到最大值和最大值所在位置
- 将位置插入Maxpos,最大值置0
- 返回步骤2,像素个数达到要求后跳出循环。
- 删掉初始点。
num=floor(0.001*m*n); %计算前0.1%的个数 MaxPos = [0,0]; % 初始化位置 for i=1:num MaxValue = max(max(dark_img)); [x,y] = find(dark_img==MaxValue); dark_img(dark_img==MaxValue) = 0; %最大值置零,寻找下一次次大值 %检查长度 MaxPos = vertcat(MaxPos,[x,y]); Cnt = length(MaxPos(1)); if Cnt > num break; end end MaxPosN = MaxPos(2:num+1,:);%删掉初始点[0,0]
找到位置中对应的三个通道灰度值
%找到三个维度的亮度最大值 Ar=0;Ag=0;Ab=0; for i=1:num if img_r(MaxPosN(i,1),MaxPosN(i,2))>Ar Ar=img_r(MaxPosN(i,1),MaxPosN(i,2)) end if img_g(MaxPosN(i,1),MaxPosN(i,2))>Ag Ag=img_r(MaxPosN(i,1),MaxPosN(i,2)) end if img_b(MaxPosN(i,1),MaxPosN(i,2))>Ab Ab=img_b(MaxPosN(i,1),MaxPosN(i,2)) end end A=[Ar,Ag,Ab] end
这篇关于【算法积累】找到前0.1%最大值的位置/MATLAB的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29DataGrip使用ssh连接数据库的操作流程
- 2024-05-28SpringBoot3.2更新声明!
- 2024-05-28中外程序员到底有啥区别?
- 2024-05-25外企也半夜发布上线吗?
- 2024-05-24鸿蒙原生应用再新丁!芒果TV 入局鸿蒙
- 2024-05-22基本概念
- 2024-05-22检索数据
- 2024-05-22排序数据
- 2024-05-22基础过滤数据
- 2024-05-22通过逻辑操作符过滤数据