IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 点云赋值时颜色的均衡化 -> 正文阅读

[Python知识库]点云赋值时颜色的均衡化

根据具体任务给点云每个点打分之后(比如saliency map),如果直接使用热力图给点赋值的效果

在这里插入图片描述
此时的直方图为
在这里插入图片描述
参考图像领域的直方图均衡化,效果如下:
在这里插入图片描述
直方图如下:
在这里插入图片描述
代码:

import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.ticker import FuncFormatter
from skimage import data,exposure
import pyvista as pv #点云可视化库

# 可视化直方图分布
def cum_prob_curve(data,bins,title,xlabel,pic_path):
    '''
    绘制概率分布直方图和累计概率分布曲线
    '''

    fig= plt.figure(figsize=(8, 4),dpi=100)
    # 设置图形的显示风格
    plt.style.use('ggplot')
    # 中文和负号的正常显示
    mpl.rcParams['font.sans-serif'] = ['Times New Roman']
    mpl.rcParams['font.sans-serif'] = [u'SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    ax1 = fig.add_subplot(111)
    ##概率分布直方图
    a1,a2,a3=ax1.hist(data,bins =bins, alpha = 0.65,density=1,edgecolor='k', stacked=True)
    ##累计概率曲线
    #生成累计概率曲线的横坐标
    indexs=[]
    a2=a2.tolist()
    for i,value in enumerate(a2):
        if i<=len(a2)-2:
            index=(a2[i]+a2[i+1])/2
            indexs.append(index)
    #生成累计概率曲线的纵坐标
    def to_percent(temp,position):
        return '%1.0f'%(100*temp) + '%'
    dis=a2[1]-a2[0]
    freq=[f*dis for f in a1]
    acc_freq=[]
    for i in range(0,len(freq)):
        if i==0:
            temp=freq[0]
        else:
            temp=sum(freq[:i+1])
        acc_freq.append(temp)
    #这是双坐标关键一步
    ax2=ax1.twinx()
    #绘制累计概率曲线
    ax2.plot(indexs,acc_freq)
    #设置累计概率曲线纵轴为百分比格式
    ax2.yaxis.set_major_formatter(FuncFormatter(to_percent))
    ax1.set_xlabel(xlabel,fontsize=8)
    ax1.set_title(title,fontsize =8)
    #把x轴的刻度间隔设置为1,并存在变量里
    # x_major_locator=MultipleLocator(xlocator)
    # ax1.xaxis.set_major_locator(x_major_locator)
    ax1.set_ylabel('频率/组距',fontsize=8)
    ax2.set_ylabel("累计频率",fontsize=8)
    #plt.savefig(pic_path,format='png', dpi=300)
    plt.show()
if __name__=='__main__':
	#归一化
	_range = np.max(sscore) - np.min(sscore)
    sscore = (sscore - np.min(sscore)) / _range
    #可视化直方图
    cum_prob_curve(sscore, bins=200, title='test', xlabel='score', pic_path='./tt')
    sscore = exposure.equalize_hist(sscore)  # 均衡化
    cum_prob_curve(sscore, bins=200, title='test', xlabel='score', pic_path='./tt')
	    saliency_point = pointclouds_pl_adv
    # 可视化点云
    p = pv.Plotter()
    for i in range(len(saliency_point)):
        p.add_mesh(pv.PolyData(saliency_point[i]), color=[sscore[i]  ,0.4 * sscore[i], 1 - 0.5 * sscore[i]], point_size=np.float(11), render_points_as_spheres=True)
    p.add_background_image('D:\\Desktop\\w.jpg')
    p.show()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:14:01  更:2022-04-06 16:15:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:37:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码