画fits图像上的极小值点
import os
from astropy.io import fits
import matplotlib.pyplot as plt
"""
这个类代表了一个矩阵图像中所有的极值点. 对图像上的每个点进行判断
"""
class FindExtremePoint():def __init__(self,fitsdata):self.name=fitsdatawith fits.open(fitsdata) as hdul:data = hdul[0].datashape = data.shapeself.data= data.reshape(shape[2], shape[3])self.observeDate=hdul[0].header['DATE-OBS']self.plotFits()def judgeExtremePoint(self,row,column):"""为了寻找极值点,首先定义一个方法,对这个方法输入图像上的一个点的行与列,通过比较这个点的值是否为周围八个点中的最大值来判断他是否为极大值如果这个点是局域最大值那么这个函数返回True,否则返回False."""data=self.datacenterValue=data[row,column]centerRow=rowcenterColumn=columnlocalValuesList=[data[centerRow, centerColumn]#将中心值以及周围的八个值放进一个列表中并从大到小排序,data[centerRow, centerColumn - 1],data[centerRow - 1, centerColumn - 1],data[centerRow - 1, centerColumn],data[centerRow - 1, centerColumn + 1],data[centerRow, centerColumn + 1],data[centerRow + 1, centerColumn + 1],data[centerRow + 1, centerColumn],data[centerRow + 1, centerColumn - 1]]sortedLocalValuesList=sorted(localValuesList,reverse=True)return sortedLocalValuesList[0]==centerValuedef judgeEveryPoint(self):"""对图像矩阵中的每一个点进行判断"""data=self.datashape=data.shapeextremeRowList=[]extremeColumnList=[]for row in range(1,shape[0]-1):for column in range(1,shape[1]-1):if self.judgeExtremePoint(row,column):extremeRowList.append(row)extremeColumnList.append(column)return [extremeRowList,extremeColumnList]def plotFits(self):extremePoint=self.judgeEveryPoint()fig, ax = plt.subplots(figsize=(8, 8))ax.scatter(extremePoint[1],extremePoint[0],s=2)ax.imshow(self.data,origin='lower',cmap='nipy_spectral_r')ax.set_title(self.observeDate)plt.savefig(fname=self.name+'.jpg')plt.close()
画fits图像上的极小值点相关推荐
- php 绘制图像如何设置字体,PHP 用 PostScript Type1 字体把文本字符串画在图像上
用户评论: soletan at toxa dot de (2010-08-15 07:35:46) As of PHP 5.2.13 with bundled GD (2.0.34) antiali ...
- PHP 使用GD库生成验证码 在图像上绘制汉字
PHP 并不仅限于创建 HTML 输出, 它也可以创建和处理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在内的多种格式的图像. 更加方便的是,PHP 可以直接将图像数据流输出到浏览器 ...
- OpenCV在图像上画线、矩形、椭圆、多边形、填充的多边形、圆、显示文字
OpenCV在图像上随机画直线.椭圆.多边形.圆.显示文字 代码如下: /*** @file Drawing_2.cpp* @brief Simple sample code*/#include &l ...
- 在yuv上画线_利用布雷森汉姆算法绘制在YUV图像上画直线
最近,因工作需要,在YUV图像上画直线: 算法1步骤: 1.已知直线的起点和终点: 2. 利用布雷森汉姆算法在两点间画直线: 3. 将该直线上的点的颜色在YUV图像上画出. 布雷森汉姆算法原理参考wi ...
- opencv3_java 在已有的图像上画圆圈 CircleOnImg
在已有的图像上画圆圈 CircleOnImg package opencv_java_demo;import org.opencv.core.*; import org.opencv.imgcodec ...
- matlab 图像上画椭圆 保持原来图像分辨率
一. 问题 在真实图像上画椭圆后,保存的图像要不有空白边界要不分辨率大小和原图不一样. 二. 解决方法 利用 figure 的 border 属性 Im2=imread('image\egg.jpg' ...
- 【目标检测】在图像上画bounding box框,生成带真实标签gt的图片
[目标检测]在图像上画bounding box框,生成带真实标签gt的图片 问题/Motivation 数据格式 用到的库 实际代码` 结果展示 问题/Motivation 在制作完数据集后,想看一下 ...
- python鼠标画点连线_使用Matplotlib在Python中使用鼠标在图像上绘制点
我试图用鼠标在图像上绘制点. 问题是:图像出现了,但是当我点击鼠标时,什么也没有绘制出来(即使我点击了几次).在 我的Python版本是python2.7,带有Anaconda和IPython控制台. ...
- python画十字_用OpenCV在图像上画十字
我认为最好是全局保存坐标,而不是使用一堆高标度/低标度.它们让我头疼,可能会因为舍入而失去精确性.在 也就是说,每次检测到某个对象时,首先将其转换为全局(原始图像)坐标.我在这里写了一个小的演示,模仿 ...
- cvDrawContours:在图像上绘制外部和内部轮廓
转自:http://www.aiseminar.cn/html/18/t-618.html?action-uchimage 函数cvDrawContours用于在图像上绘制外部和内部轮廓.当thick ...
最新文章
- C/C++:多个.cpp文件包括同一个.h头文件定义方法
- 前端跨域问题的几种解决方案
- 往写好的html插入标签,写一个可插入自定义标签的 Textarea 组件
- html+单选+回显,VUE+elementUI表格多选框实现单选以及数据回显时toggleRowSelection失效问题...
- 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适
- ruby mysql 占位符_ruby操作常用数据库
- SpringBoot @Cacheable缓存入门程序
- python成长之路10——socketserver源码分析
- P1830 轰炸III
- JavaScript 运行机制详解:再谈Event Loop
- CentOS 6.5使用本地光盘做yum源
- 第二讲:Obj-C 点语法
- python训练营 朋友圈点赞收费吗_微信朋友圈点赞,是不是扣话费?有人给
- 互联网摸鱼日报(2022-10-17)
- YYKit 常见用法总结
- kindeditor上传图片php,使用 KindEditor 编辑器PHP语言本地上传图片提示错误
- python爬虫,爬取哔哩哔哩视频
- python爬虫之淘宝秒抢软件
- nodejs后端office转pdf
- 房价――你欠中国老百姓一次彻底的崩盘!
热门文章
- React组件三大属性props state refs以及组件的生命周期
- kernel支持4k/16k/64k pagesize
- centos 加密解密
- Volatile关键字~转载自博客园的“海子”
- 利用简单Json处理实现企业微信后台“客户朋友圈”统计导出
- C语言是否能用memcmp函数比较结构体
- Android Display ID 对应关系
- 多网卡多网关设置错误:RTNETLINK answers: File exists
- 桌面管理 | Windows自带工具
- 计算机网络(自顶向下方法)读书笔记----吐血整理