V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  jeeyong  ›  全部回复第 6 页 / 共 47 页
回复总数  934
1 ... 2  3  4  5  6  7  8  9  10  11 ... 47  
2022-10-02 08:58:05 +08:00
回复了 jeeyong 创建的主题 Python sublime 代码提示会有很多没用的内容.
@jfcherng 他应该是 Sublime 的提示 和 Anaconda 在一起的.


@jfcherng 请问 safe Mode 如何设置.?
另外, 并不是所有的库都如此...
2022-09-28 20:16:19 +08:00
回复了 jeeyong 创建的主题 Python [求助]关于 dicom 文件转存为 png 时灰度处理的问题.
@ysc3839 别的系统导出来的...


@laqow 解决了..一直是尝试转成 int 类型的, 改成 uin8 就得到期望的类型了..
但是至于为啥...我不懂.
2022-09-24 17:53:23 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
结帖! 感谢中间提供帮助和建议的大佬们.

中间经历的几个需要反思的问题点.
1. 没用弄懂图片的格式相关知识的情况下, 盲目上手, 导致做了很多很多无效的计算.
2. 没有用好 numpy


附上源码
from numpy import maximum,uint8
from pydicom import dcmread
from PIL.Image import fromarray
from time import perf_counter
import numpy as np
import PIL
import time


start = time.time()
dcm = dcmread('dcm/aaa.dcm')
imageSources = dcm.ReferencedImageBoxSequence[0].BasicGrayscaleImageSequence[0]
imageData = imageSources.PixelData
# *** 下面这句是最重要和相对来说最耗时的
image = np.frombuffer(imageData, dtype=np.uint8).reshape(imageSources.Rows, imageSources.Columns, 2)

img = PIL.Image.fromarray(image, mode='LA')
img = img.convert('RGB')
img.save('test1.png')
print(time.time() - start)

总计用时 1.6S, numpy 果然强大.


@Xs0ul 谢谢! 另外, 我最后问的关于生成图片的问题, 是我弄错了, 我用两个完全不同部位的图片做的对比..
头部的 CT 结果轮廓很清晰, 腹部的, 看起来就不清楚了..纯粹是我粗心导致的错误.
2022-09-24 14:35:21 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@encro 存 jpg 会报错, 就没去管它了, 现存成 png, 解决问题再优化
2022-09-24 14:34:34 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@Xs0ul 嗯...208 是灰度, 4 是 alpha 我提高了 alpha 值, 255 - 原 alpha 值 也还是不如我期望的那张图那么清晰.
奇怪了...
2022-09-24 13:24:10 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@Xs0ul 元素对调有什么好方法吗?
就是我想尝试把 208 当成 Alpha 通道, 4 当成灰度, 解析一次图像
2022-09-24 13:17:51 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@Xs0ul 太着急了, 没粘好.
https://imgur.com/WWKXy9A
2022-09-24 03:57:58 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@Xs0ul Hey~`
这方法效率很高..
但是有个问题....
他显示出来的图片...如果是 LA 模式, 很浅. 黑色的几乎看不清楚
我尝试用循环把 Alpha 通道值修改为 255 - 原值.
结果图像感觉噪点又很多
LA 模式:
https://imgur.com/QmmmcX9

转为 RGBA 模式
https://imgur.com/GPtekhA

期望得到的结果:
https://imgur.com/undefined
2022-09-24 02:57:36 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@lucays 第三天....T_T
2022-09-24 00:57:20 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@Muniesa 老哥, 图完全看不清楚
2022-09-24 00:29:51 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@Cy86
@jdhao
@chashao
@paopjian
老哥们, 辛苦啊...
我现在是直接用真实的患者 CT 片子写..
不能外传....

另外, 我看有人已经上 pydicom 了...
另外我请教一下, 我现在处理的 dicom 格式不是通用的 dicom 格式...
是排版好之后的 dcm 文件.
很多信息不能直接获取..最重要的 pydicom.pixel_array 和 pixelData 是没有的..
我是通过 pydicom
dcm = pydicom.read_file(filePath)
imageInfo = dcm.ReferencedImageBoxSequence[0].BasicGrayscaleImageSequence[0]
这种方式获取的 pixelData 的 bytes
有人能科普一下这个问题吗?
2022-09-23 16:40:34 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@wcsjtu 我先尝试 numpy 的方案....再看预编译或者 jit 类的...
谢谢~
2022-09-23 16:35:27 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
各位的代码, 够我消化一夜了....
太感谢了...太感谢了!
@hsfzxjy
@yoohwzy
@stein42
2022-09-23 16:34:15 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@dlsflh
我是直接写个 tensor 扔给 torch 跑,我知道它会自动用 SIMD 或者 CUDA (如果启动 gpu 的话)

@lmshl 这大哥的做法解释了你的疑问..
2022-09-23 16:32:30 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@stein42 卧槽卧槽, 果然大神多....
我需要消化一下代码...
这之前都没用过 numpy...感谢感谢..

另外请教一下,
buffer = bytes([208, 4]) * (width * height)
文件内容不只是 [208, 4] 还有其他的灰度值和通道值, 这一步不理解..
2022-09-23 16:30:08 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@threebr 我的理解是, python 要通过对应的接口和 numpy 通信, 而 numpy 本身对于下标赋值这种操作的过程是很复杂的.
这基本就是昨天看到的一篇文章的原话. 作者还列出了对应的处理过程, 因为是 C, 直接放弃阅读了..
2022-09-23 16:28:58 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@hsfzxjy 是吗? 一直很怕上 C 相关的东西...哈哈
nodejs 可以直接读数据库获取路径, 去转换完了写回对应字段...
解决问题来说, 应该这个方法是最快的..
但是不服气啊...60 秒和 2.3 秒的差距...
2022-09-23 16:26:53 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@yoohwzy
@lookStupiToForce 感谢回复..先尝试 np.stack 的用法...
再看 google 结果...
对..如果不用转换, 直接读取生成, 是正确的思路..只是当时没找到方法, 就先硬上了..
先解决,再优化~
2022-09-23 16:24:42 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@lizytalk 试过.. 仅限于 @jit 装饰. 一堆警告和报错.
主要是不支持一些方法. 包括不限于 numpy 的...
网上翻的教程, 所有的数组转 uint8 类型, 都是 numpy 直接干的...
其他我就不会了...有其他方法我也想试试.... 不用 numpy 转换, 或许可以直接上 pypy
2022-09-23 16:22:50 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
@MoYi123
我读出来的 bytes 数据处理成 uint8 后. 是这样的形式:
[208, 4, 208, 4, 208, 4...196, 8]
不懂图像处理的知识, 我的理解就是, 一个灰度, 一个 Alpha 通道值(透明值?).
第一次处理数组是要把上面的数组, 改成如下形式: <- 暂且叫 生成数组阶段.
就是再赋值两次灰度..写入数组.构建成如下形式:

[208, 208, 208, 4, 208, 208, 208, 4.......]

再下一步就是把 208 这个灰度值变成 rgb 的形式.
然后再通过一个循环变成 pillow 支持的格式, 如下: <- 暂且叫 数组转换阶段吧.
[
[ [r, g, b, a], [r, g, b, a], [r, g, b, a], ],
[ [r, g, b, a], [r, g, b, a], [r, g, b, a], ],
[ [r, g, b, a], [r, g, b, a], [r, g, b, a], ],
]

我补充了点文字..你看一下能理解吗?
1 ... 2  3  4  5  6  7  8  9  10  11 ... 47  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1190 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 23:01 · PVG 07:01 · LAX 16:01 · JFK 19:01
Developed with CodeLauncher
♥ Do have faith in what you're doing.