Итак, в настоящее время я работаю над кодом, который предположительно читает, анализирует, сегментирует и выполняет вычисления соотношения сторон в соответствии с теорией Садхукана 2022. Но я все еще застрял на кодировании, так как моя программа все время умирает от перегрузки.
Всего 4 набора папок, в каждой из которых лежат сотни сделанных изображений в формате TIFF. Как я могу переформулировать свой код, чтобы он действительно был работоспособным и мог выполнять расчеты соотношения сторон... (В конце концов, есть ли другие способы сделать это? Я в отчаянии)
import os
import numpy as np
import imageio
import scipy.ndimage as ndi
import scipy as sc
import matplotlib.pyplot as plt
from skimage import filters, measure, morphology, segmentation, util, exposure
from skimage.segmentation import watershed
"""
skipping some normalizations, parameters, bandpass, segmentation using watershed)
"""
def process_image_file(path_to_tiff,
h_to_um_scale=h_to_um,
s_high=s_high_default,
s_low=s_low_default,
H=h_max_threshold,
min_maxima=min_maxima_size,
min_obj=min_object_size):
image = imageio.v2.imread(path_to_tiff).astype(float)
folder = os.path.dirname(path_to_tiff)
mask_path = os.path.join(folder,"mask.tiff")
if os.path.exists(mask_path):
mask = imageio.v2.imread(mask_path) > 0
else:
mask = image > 0
image_um = image * h_to_um_scale
image_um *= mask
band, high, low = bandpass_filter(image_um, s_high=s_high, s_low=s_low)
im_norm = normalized_and_mask(band, image_um)
seed, recon, hmax = find_local_maxima(im_norm, H=H, min_size=min_maxima)
labels, props, centroids = segment_with_watershed(band, recon, image_um, min_size=min_obj)
result= {
"path":path_to_tiff,
"raw":image_um,
"band_pass": band,
"high_pass": high,
"low_pass": low,
"normalized": im_norm,
"seed": seed,
"reconstruction": recon,
"local_maxima": hmax,
"labels": labels,
"regionprops": props,
"centroids": centroids
}
return result
def process_folder(folder_path, file_pattern=None, **kwargs):
results = []
for fname in sorted(os.listdir(folder_path)):
if fname.lower().endswith(('.tif', '.tiff')):
if file_pattern is None or file_pattern(fname):
full = os.path.join(folder_path, fname)
res = process_image_file(full, **kwargs)
results.append(res)
return results
def process_multiple_folders(folder_paths, **kwargs):
datasets = []
for f in folder_paths:
ds = process_folder(f, **kwargs)
datasets.append({"folder": f, "files": ds})
return datasets
if __name__ == "__main__":
base1="xx"
base2="xxx"
folders =[
os.path.join(base1, "A2-1"),
os.path.join(base1, "A2-7"),
os.path.join(base2, "A1-13"),
os.path.join(base2, "B1-11")
]
if len(folders) != 4:
raise ValueError("Please provide exactly 4 folder paths,")
for f in folders:
if not os.path.isdir(f):
raise FileNotFoundError(f"Folder not found: {f}")
datasets = process_multiple_folders(
folders,
h_to_um_scale=h_to_um,
s_high=s_high_default,
s_low=s_low_default,
H=h_max_threshold,
min_maxima=min_maxima_size,
min_obj=min_object_size
)
set1, set2, set3, set4 = [d["files"] for d in datasets]
print("Images processed per set:", len(set1), len(set2), len(set3), len(set4))
Подробнее здесь: https://stackoverflow.com/questions/798 ... er-project
Как сократить/реорганизовать код? проект сегментации клеток активного вещества ⇐ Python
Программы на Python
1762179131
Anonymous
Итак, в настоящее время я работаю над кодом, который предположительно читает, анализирует, сегментирует и выполняет вычисления соотношения сторон в соответствии с теорией Садхукана 2022. Но я все еще застрял на кодировании, так как моя программа все время умирает от перегрузки.
Всего 4 набора папок, в каждой из которых лежат сотни сделанных изображений в формате TIFF. Как я могу переформулировать свой код, чтобы он действительно был работоспособным и мог выполнять расчеты соотношения сторон... (В конце концов, есть ли другие способы сделать это? Я в отчаянии)
import os
import numpy as np
import imageio
import scipy.ndimage as ndi
import scipy as sc
import matplotlib.pyplot as plt
from skimage import filters, measure, morphology, segmentation, util, exposure
from skimage.segmentation import watershed
"""
skipping some normalizations, parameters, bandpass, segmentation using watershed)
"""
def process_image_file(path_to_tiff,
h_to_um_scale=h_to_um,
s_high=s_high_default,
s_low=s_low_default,
H=h_max_threshold,
min_maxima=min_maxima_size,
min_obj=min_object_size):
image = imageio.v2.imread(path_to_tiff).astype(float)
folder = os.path.dirname(path_to_tiff)
mask_path = os.path.join(folder,"mask.tiff")
if os.path.exists(mask_path):
mask = imageio.v2.imread(mask_path) > 0
else:
mask = image > 0
image_um = image * h_to_um_scale
image_um *= mask
band, high, low = bandpass_filter(image_um, s_high=s_high, s_low=s_low)
im_norm = normalized_and_mask(band, image_um)
seed, recon, hmax = find_local_maxima(im_norm, H=H, min_size=min_maxima)
labels, props, centroids = segment_with_watershed(band, recon, image_um, min_size=min_obj)
result= {
"path":path_to_tiff,
"raw":image_um,
"band_pass": band,
"high_pass": high,
"low_pass": low,
"normalized": im_norm,
"seed": seed,
"reconstruction": recon,
"local_maxima": hmax,
"labels": labels,
"regionprops": props,
"centroids": centroids
}
return result
def process_folder(folder_path, file_pattern=None, **kwargs):
results = []
for fname in sorted(os.listdir(folder_path)):
if fname.lower().endswith(('.tif', '.tiff')):
if file_pattern is None or file_pattern(fname):
full = os.path.join(folder_path, fname)
res = process_image_file(full, **kwargs)
results.append(res)
return results
def process_multiple_folders(folder_paths, **kwargs):
datasets = []
for f in folder_paths:
ds = process_folder(f, **kwargs)
datasets.append({"folder": f, "files": ds})
return datasets
if __name__ == "__main__":
base1="xx"
base2="xxx"
folders =[
os.path.join(base1, "A2-1"),
os.path.join(base1, "A2-7"),
os.path.join(base2, "A1-13"),
os.path.join(base2, "B1-11")
]
if len(folders) != 4:
raise ValueError("Please provide exactly 4 folder paths,")
for f in folders:
if not os.path.isdir(f):
raise FileNotFoundError(f"Folder not found: {f}")
datasets = process_multiple_folders(
folders,
h_to_um_scale=h_to_um,
s_high=s_high_default,
s_low=s_low_default,
H=h_max_threshold,
min_maxima=min_maxima_size,
min_obj=min_object_size
)
set1, set2, set3, set4 = [d["files"] for d in datasets]
print("Images processed per set:", len(set1), len(set2), len(set3), len(set4))
Подробнее здесь: [url]https://stackoverflow.com/questions/79807950/how-to-shorten-reorganize-the-code-cell-segmentation-of-active-matter-project[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия