change archive
This commit is contained in:
flandre 2025-04-23 17:03:38 +08:00
parent aaf988df53
commit 8b2883625d
4 changed files with 69 additions and 3 deletions

View File

@ -1,11 +1,13 @@
import logging
import time
import traceback
import cupy as cp
import zmq
from flandre.beamformer.das import gen_pwi
from flandre.beamformer.das import gen_pwi, TFM
from flandre.beamformer.dist import direct_dist
from flandre.beamformer.kernels import dist_mat_to_yids
from flandre.config import C
from flandre.nodes.Node import Node
from flandre.utils.Config import DeviceConfig
@ -22,6 +24,7 @@ class Beamformer(Node):
def __init__(self, level=logging.INFO):
super(Beamformer, self).__init__(level=level)
self.muxer_req_socket: zmq.Socket = None
self.tfm = None
def custom_setup(self):
self.muxer_req_socket: zmq.Socket = self.c.ctx.socket(zmq.REQ)
@ -61,6 +64,23 @@ class Beamformer(Node):
self.send(RfMatMsg(d2))
# self.send(RGB888Msg(d2.__bytes__(), d2.w, d2.h))
def process_tfm(self, data: RfMat, arg: ImageArgMsg, tfm):
d2 = (data
.dct_center(arg.dct_center, arg.dct_bandwidth)
# .filter_max_persent(icfg.bscan_max / 1000, bid=True)
.call(lambda m: m.astype(cp.int16))
.call(tfm)
.call(cp.asarray, order='C')
.argrelextrema(axis=1)
.conv_guass(b=arg.beta * 0.01)
.crop_center(arg.t_start, arg.t_end)
.time_gain_compensation_global((1 - arg.g8 * (1.0 / 128)) ** 2)
.rotate90()
.grey()
.cpu()
)
self.send(RfMatMsg(d2))
def loop(self):
dc = DeviceConfig()
pwi, _, mm = gen_pwi(direct_dist(dc), dc)
@ -84,6 +104,7 @@ class Beamformer(Node):
arg_msg: ImageArgMsg = Msg.decode_msg(r[:id2])
rf_frame_msg: RfFrameMsg = Msg.decode_msg(r[id2:])
mat = RfMat.from_rf_frame(rf_frame_msg.rf_frame, 'gpu')
logger.info(mat.frame_meta.blake2b)
if mat is None:
continue
if arg_msg.v2 != last_v2 or arg_msg.f_rows != last_f_rows:
@ -95,5 +116,12 @@ class Beamformer(Node):
try:
if mat.seq_meta.mode == RfSequenceMeta.RfSequenceMode.PWI:
self.process_pwi(mat, arg_msg, pwi)
if mat.seq_meta.mode == RfSequenceMeta.RfSequenceMode.TFM:
if self.tfm is None:
dc = DeviceConfig(v2=arg_msg.v2, rows=arg_msg.f_rows)
self.tfm = TFM(dc)
self.tfm.load_yids(dist_mat_to_yids(direct_dist()))
self.process_tfm(mat, arg_msg, self.tfm)
except Exception as e:
logger.warning(e)
traceback.print_exc()

View File

@ -510,6 +510,12 @@ class Adv(QMainWindow, Ui_MainWindow):
self.arg.v2 = v
self.p.send(self.arg)
@pyqtSlot(int)
def on_sp_f_rows_valueChanged(self, v):
if self.sp_f_rows.sender() is None:
self.arg.f_rows = v
self.p.send(self.arg)
@pyqtSlot(int)
def on_s_beta_valueChanged(self, v):
if self.s_beta.sender() is None:

View File

@ -54,11 +54,26 @@ def to_zip(li: list[tuple[Path, 'RfFrameMeta', list[tuple[Path, str]]]], temp_ds
def zip_to_bytes(file: Path, name: int):
return zstd.loads(zipfile.ZipFile(file).open(f'{name}.zst').read())
def zip_to_bytes2(file: Path, name: str):
return zstd.loads(zipfile.ZipFile(file).open(name).read())
if __name__ == '__main__':
to_zip()
from flandre.utils.RfMeta import RfFrameMeta
# folder_to_zip()
arr = []
for i, f in enumerate(Path('/mnt/16T/private_dataset/New Folder/T1,U=30,M=FMC,S=(256 256 4502)').glob('*')):
m = RfFrameMeta.from_path(f)
m.encoder = 0
arr.append((Path(f), m, []))
arr.sort(key=lambda item: item[1].robot_x)
for i, e in enumerate(arr):
e[1].sequence_id = i
to_zip(arr, TEMP_FOLDER, Path('/mnt/16T/private_dataset/T1,U=30,M=TFM,S=(256 256 4502)'))
# to_zip()
# pass
# cli()
# folder_to_zip(Path('/mnt/16T/private_dataset/us/R1,U=30,M=PWI,S=(256 1502)'))

View File

@ -3,7 +3,8 @@ from pathlib import Path
from flandre.utils.RfMeta import RfFrameMeta, RfSequenceMeta
from flandre.utils.archive import to_zip
if __name__ == '__main__':
def f1():
# rr = RfSequenceMeta
tempdst = Path('/mnt/16T/private_dataset/ustemp')
arr = []
@ -28,3 +29,19 @@ if __name__ == '__main__':
arg.append((file, meta, farr))
to_zip(arg, tempdst, Path('/mnt/16T/private_dataset/us/steel-top,U=30,M=PWI,S=(256 1502).zip'))
def f2():
tempdst = Path('/mnt/16T/private_dataset/ustemp')
src = Path('/mnt/16T/private_dataset/New Folder/T1,U=30,M=FMC,S=(256 256 1502)/')
arr = []
for (i,
file) in enumerate(Path('/mnt/16T/private_dataset/New Folder/steel-top/').glob('*pwi.bin')):
file = Path(file)
x, _ = file.name.split('_')
r = RfFrameMeta(encoder=0, robot_x=int(x) * 100, robot_y=int(y) * 100)
arr.append((file, r))
arr.sort(key=lambda item: (item[1].robot_y, item[1].robot_x))
print(arr)
if __name__ == '__main__':
f2()