update
This commit is contained in:
parent
804a3064f6
commit
dab53f5dfa
239
env.yaml
Normal file
239
env.yaml
Normal file
@ -0,0 +1,239 @@
|
||||
name: cveo_ss
|
||||
channels:
|
||||
- conda-forge
|
||||
- defaults
|
||||
dependencies:
|
||||
- appdirs=1.4.4=pyh9f0ad1d_0
|
||||
- astroid=2.8.6=py37h03978a9_1
|
||||
- blosc=1.21.1=h74325e0_3
|
||||
- boost-cpp=1.78.0=h9f4b32c_1
|
||||
- brotli=1.0.9=h8ffe710_7
|
||||
- brotli-bin=1.0.9=h8ffe710_7
|
||||
- brotlipy=0.7.0=py37hcc03f2d_1004
|
||||
- bzip2=1.0.8=h8ffe710_4
|
||||
- c-blosc2=2.3.1=hdf67494_0
|
||||
- ca-certificates=2022.6.15.1=h5b45459_0
|
||||
- cairo=1.16.0=hb19e0ff_1008
|
||||
- certifi=2022.6.15.1=pyhd8ed1ab_0
|
||||
- cffi=1.15.1=py37hd8e9650_0
|
||||
- cfitsio=3.470=h0af3d06_7
|
||||
- charls=2.2.0=h39d44d4_0
|
||||
- charset-normalizer=2.1.1=pyhd8ed1ab_0
|
||||
- cloudpickle=2.2.0=pyhd8ed1ab_0
|
||||
- colorama=0.4.5=pyhd8ed1ab_0
|
||||
- coverage=6.4.4=py37hcc03f2d_0
|
||||
- cryptography=3.4.7=py37h20c650d_0
|
||||
- curl=7.83.1=h789b8ee_0
|
||||
- cycler=0.11.0=pyhd8ed1ab_0
|
||||
- cytoolz=0.12.0=py37hcc03f2d_0
|
||||
- dask-core=2021.9.1=pyhd8ed1ab_0
|
||||
- decorator=5.1.0=pyhd8ed1ab_0
|
||||
- draco=1.5.3=h5362a0b_0
|
||||
- exiv2=0.27.5=h02b4549_0
|
||||
- expat=2.4.8=h39d44d4_0
|
||||
- fontconfig=2.14.0=hce3cb01_0
|
||||
- fonttools=4.37.1=py37hcc03f2d_0
|
||||
- freeglut=3.2.2=h0e60522_1
|
||||
- freetype=2.12.1=h546665d_0
|
||||
- freexl=1.0.6=ha8e266a_0
|
||||
- fsspec=2022.8.2=pyhd8ed1ab_0
|
||||
- future=0.18.2=py37h03978a9_3
|
||||
- gdal=3.3.1=py37hb11e9a8_2
|
||||
- geos=3.9.1=h39d44d4_2
|
||||
- geotiff=1.6.0=ha8a8a2d_6
|
||||
- gettext=0.19.8.1=ha2e2712_1008
|
||||
- giflib=5.2.1=h8d14728_2
|
||||
- gsl=2.7=hdfb1a43_0
|
||||
- hdf4=4.2.15=h0e5069d_4
|
||||
- hdf5=1.10.6=nompi_h5268f04_1114
|
||||
- httplib2=0.20.4=pyhd8ed1ab_0
|
||||
- icu=68.2=h0e60522_0
|
||||
- idna=3.3=pyhd8ed1ab_0
|
||||
- imagecodecs=2021.8.26=py37h91eda04_1
|
||||
- imageio=2.21.3=pyhfa7a67d_0
|
||||
- intel-openmp=2022.1.0=h57928b3_3787
|
||||
- isort=5.10.1=pyhd8ed1ab_0
|
||||
- jasper=2.0.33=h77af90b_0
|
||||
- jbig=2.1=h8d14728_2003
|
||||
- jinja2=3.1.2=pyhd8ed1ab_1
|
||||
- jpeg=9e=h8ffe710_2
|
||||
- jsoncpp=1.9.4=h2d74725_3
|
||||
- jxrlib=1.1=h8ffe710_2
|
||||
- kealib=1.4.14=h96bfa42_2
|
||||
- kiwisolver=1.4.4=py37h8c56517_0
|
||||
- krb5=1.19.3=h1176d77_0
|
||||
- laszip=3.4.3=h6538335_1
|
||||
- laz-perf=3.0.0=h2d74725_0
|
||||
- lazy-object-proxy=1.7.1=py37hcc03f2d_1
|
||||
- lcms2=2.12=h2a16943_0
|
||||
- lerc=3.0=h0e60522_0
|
||||
- libaec=1.0.6=h39d44d4_0
|
||||
- libblas=3.9.0=16_win64_mkl
|
||||
- libbrotlicommon=1.0.9=h8ffe710_7
|
||||
- libbrotlidec=1.0.9=h8ffe710_7
|
||||
- libbrotlienc=1.0.9=h8ffe710_7
|
||||
- libcblas=3.9.0=16_win64_mkl
|
||||
- libclang=11.1.0=default_h5c34c98_1
|
||||
- libcurl=7.83.1=h789b8ee_0
|
||||
- libdeflate=1.8=h8ffe710_0
|
||||
- libffi=3.4.2=h8ffe710_5
|
||||
- libgdal=3.3.1=h7e75cf7_2
|
||||
- libglib=2.72.1=h3be07f2_0
|
||||
- libiconv=1.16=he774522_0
|
||||
- libkml=1.3.0=hf2ab4e4_1015
|
||||
- liblapack=3.9.0=16_win64_mkl
|
||||
- liblapacke=3.9.0=16_win64_mkl
|
||||
- libnetcdf=4.8.1=nompi_hf689e7d_100
|
||||
- libopencv=4.5.3=py37h6700db3_1
|
||||
- libpng=1.6.37=h1d00b33_4
|
||||
- libpq=13.5=hfcc5ef8_1
|
||||
- libprotobuf=3.16.0=h7755175_0
|
||||
- librttopo=1.1.0=hb340de5_6
|
||||
- libspatialindex=1.9.3=h39d44d4_4
|
||||
- libspatialite=5.0.1=h762a7f4_6
|
||||
- libsqlite=3.39.3=hcfcfb64_0
|
||||
- libssh2=1.10.0=h680486a_3
|
||||
- libtiff=4.3.0=hd413186_2
|
||||
- libwebp=1.2.4=h8ffe710_0
|
||||
- libwebp-base=1.2.4=h8ffe710_0
|
||||
- libxcb=1.13=hcd874cb_1004
|
||||
- libxml2=2.9.14=hf5bbc77_4
|
||||
- libxslt=1.1.35=h34f844d_0
|
||||
- libzip=1.9.2=hfed4ece_1
|
||||
- libzlib=1.2.12=hcfcfb64_3
|
||||
- libzopfli=1.0.3=h0e60522_0
|
||||
- locket=1.0.0=pyhd8ed1ab_0
|
||||
- lz4-c=1.9.3=h8ffe710_1
|
||||
- m2w64-gcc-libgfortran=5.3.0=6
|
||||
- m2w64-gcc-libs=5.3.0=7
|
||||
- m2w64-gcc-libs-core=5.3.0=7
|
||||
- m2w64-gmp=6.1.0=2
|
||||
- m2w64-libwinpthread-git=5.0.0.4634.697f757=2
|
||||
- markupsafe=2.1.1=py37hcc03f2d_1
|
||||
- matplotlib-base=3.5.3=py37hbaab90a_2
|
||||
- mccabe=0.6.1=py_1
|
||||
- mkl=2022.1.0=h6a75c08_874
|
||||
- mock=4.0.3=py37h03978a9_3
|
||||
- msys2-conda-epoch=20160418=1
|
||||
- munkres=1.1.4=pyh9f0ad1d_0
|
||||
- networkx=2.7.1=pyhd8ed1ab_0
|
||||
- nitro=2.7.dev6=h39d44d4_5
|
||||
- nose2=0.9.2=py_0
|
||||
- numpy=1.21.2=py37h940b05c_0
|
||||
- opencv=4.5.3=py37h03978a9_1
|
||||
- openjpeg=2.4.0=hb211442_1
|
||||
- openssl=1.1.1q=h8ffe710_0
|
||||
- owslib=0.27.2=pyhd8ed1ab_1
|
||||
- packaging=21.3=pyhd8ed1ab_0
|
||||
- pandas=1.3.5=py37h9386db6_0
|
||||
- partd=1.3.0=pyhd8ed1ab_0
|
||||
- pcre=8.45=h0e60522_0
|
||||
- pdal=2.3.0=hde8ebe7_6
|
||||
- pip=21.2.4=pyhd8ed1ab_0
|
||||
- pixman=0.40.0=h8ffe710_0
|
||||
- pkg-config=0.29.2=h2bf4dc2_1008
|
||||
- pkgconfig=1.5.5=py37h03978a9_2
|
||||
- platformdirs=2.5.2=pyhd8ed1ab_1
|
||||
- plotly=5.10.0=pyhd8ed1ab_0
|
||||
- pooch=1.6.0=pyhd8ed1ab_0
|
||||
- poppler=21.03.0=h9ff6ed8_0
|
||||
- poppler-data=0.4.11=hd8ed1ab_0
|
||||
- postgresql=13.5=h1c22c4f_1
|
||||
- proj=8.0.1=h1cfcee9_0
|
||||
- psycopg2=2.9.2=py37hd8e9650_0
|
||||
- pthread-stubs=0.4=hcd874cb_1001
|
||||
- py-opencv=4.5.3=py37h4038f58_1
|
||||
- pycparser=2.20=pyh9f0ad1d_2
|
||||
- pygments=2.10.0=pyhd8ed1ab_0
|
||||
- pylint=2.11.1=pyhd8ed1ab_0
|
||||
- pyopenssl=21.0.0=pyhd8ed1ab_0
|
||||
- pyparsing=3.0.9=pyhd8ed1ab_0
|
||||
- pyproj=3.2.1=py37h9f67652_0
|
||||
- pyqt=5.12.3=py37h03978a9_8
|
||||
- pyqt-impl=5.12.3=py37hf2a7229_8
|
||||
- pyqt5-sip=4.19.18=py37hf2a7229_8
|
||||
- pyqtads=3.8.2=py37hf2a7229_0
|
||||
- pyqtchart=5.12=py37hf2a7229_8
|
||||
- pyqtwebengine=5.12.1=py37hf2a7229_8
|
||||
- pyqtwebkit=5.212=py37h9e7b984_2
|
||||
- pysocks=1.7.1=py37h03978a9_5
|
||||
- python=3.7.10=h7840368_101_cpython
|
||||
- python-dateutil=2.8.2=pyhd8ed1ab_0
|
||||
- python_abi=3.7=2_cp37m
|
||||
- pytz=2021.1=pyhd8ed1ab_0
|
||||
- pywavelets=1.1.1=py37hec80d1f_3
|
||||
- pywin32=303=py37hcc03f2d_0
|
||||
- pyyaml=5.4.1=py37hcc03f2d_1
|
||||
- qca=2.2.1=hd7ce7fb_3
|
||||
- qgis=3.18.3=py37h3dc7164_2
|
||||
- qjson=0.9.0=hd7ce7fb_1006
|
||||
- qscintilla2=2.11.2=py37h9e7b984_6
|
||||
- qt=5.12.9=h5909a2a_4
|
||||
- qtkeychain=0.12.0=h552f0f6_0
|
||||
- qtlocation=5.12.9=ha925a31_0
|
||||
- qtwebkit=5.212=hb258684_1
|
||||
- qwt=6.1.6=h552f0f6_0
|
||||
- qwtpolar=1.1.1=hd7ce7fb_7
|
||||
- requests=2.28.1=pyhd8ed1ab_1
|
||||
- scikit-image=0.18.3=py37h9386db6_0
|
||||
- scipy=1.7.1=py37hb6553fb_0
|
||||
- setuptools=59.8.0=py37h03978a9_1
|
||||
- six=1.16.0=pyh6c4a22f_0
|
||||
- snappy=1.1.9=h82413e6_1
|
||||
- sqlite=3.39.3=hcfcfb64_0
|
||||
- tbb=2021.5.0=h91493d7_2
|
||||
- tenacity=8.0.1=pyhd8ed1ab_0
|
||||
- tifffile=2021.11.2=pyhd8ed1ab_0
|
||||
- tiledb=2.3.4=h78dabda_0
|
||||
- tk=8.6.12=h8ffe710_0
|
||||
- toml=0.10.2=pyhd8ed1ab_0
|
||||
- tomli=2.0.1=pyhd8ed1ab_0
|
||||
- toolz=0.12.0=pyhd8ed1ab_0
|
||||
- typed-ast=1.5.4=py37hcc03f2d_0
|
||||
- typing-extensions=4.3.0=hd8ed1ab_0
|
||||
- typing_extensions=4.3.0=pyha770c72_0
|
||||
- ucrt=10.0.20348.0=h57928b3_0
|
||||
- unicodedata2=14.0.0=py37hcc03f2d_1
|
||||
- urllib3=1.26.11=pyhd8ed1ab_0
|
||||
- vc=14.2=hb210afc_7
|
||||
- vs2015_runtime=14.29.30139=h890b9b1_7
|
||||
- wheel=0.37.1=pyhd8ed1ab_0
|
||||
- win_inet_pton=1.1.0=py37h03978a9_4
|
||||
- wrapt=1.13.3=py37hcc03f2d_1
|
||||
- xerces-c=3.2.3=h0e60522_5
|
||||
- xorg-libxau=1.0.9=hcd874cb_0
|
||||
- xorg-libxdmcp=1.1.3=hcd874cb_0
|
||||
- xz=5.2.6=h8d14728_0
|
||||
- yaml=0.2.5=he774522_0
|
||||
- zfp=0.5.5=h0e60522_8
|
||||
- zlib=1.2.12=hcfcfb64_3
|
||||
- zlib-ng=2.0.6=h8ffe710_0
|
||||
- zstd=1.5.2=h7755175_4
|
||||
- pip:
|
||||
- attrs==21.4.0
|
||||
- autopep8==2.0.0
|
||||
- conda-pack==0.6.0
|
||||
- cython==0.29.24
|
||||
- efficientnet-pytorch==0.7.1
|
||||
- filelock==3.12.0
|
||||
- huggingface-hub==0.14.1
|
||||
- importlib-metadata==4.8.1
|
||||
- joblib==1.1.0
|
||||
- munch==2.5.0
|
||||
- nuitka==0.8.3
|
||||
- opencv-python==4.5.3.56
|
||||
- ordered-set==4.1.0
|
||||
- pathlib==1.0.1
|
||||
- pillow==6.2.2
|
||||
- pretrainedmodels==0.7.4
|
||||
- pycodestyle==2.9.1
|
||||
- pycryptodome==3.14.1
|
||||
- rios==0.0.0.0.dev20200902
|
||||
- scikit-learn==1.0.2
|
||||
- sklearn==0.0
|
||||
- threadpoolctl==3.1.0
|
||||
- timm==0.6.13
|
||||
- torch==1.13.1
|
||||
- torchvision==0.14.1
|
||||
- tqdm==4.65.0
|
||||
- zipp==3.8.1
|
@ -1 +1 @@
|
||||
vd4FiYncytyziGH9GNCAA8hGGr1/79Xmphtc5+PHPJDpxvqj1hP7+985QMojYO4M5Qn/aqEAvFgeDN3CA8x1YAK8SdCgSXSBJpRBK8wqPQjBY1ak96QfdPCrTLunr+xuPxK3Gxe772adTTsee2+ot7WePYUsC4y4NcS5+rlP1if87xtYqVeSwx3c64cOmAGP
|
||||
IaqFuRlbPMtYTReB0p+cxn8sffVeOjbq+d46I2texZIVIeLbwCxJ7w3mqlramQy3p0totEfoSkjIrQV1GjtrOOWsuYRqv5ZZ5A+/PdTd7ZU8WlMAl7sknJGJFWvciG1VL9n9XtJUG+CJg4oLYkdwR5WePYUsC4y4NcS5+rlP1if87xtYqVeSwx3c64cOmAGP
|
@ -8,7 +8,7 @@ from rscder.utils.project import Project
|
||||
from rscder.utils.geomath import geo2imageRC, imageRC2geo
|
||||
import math
|
||||
from .packages import get_model
|
||||
|
||||
import numpy as np
|
||||
class BasicAICD(AlgFrontend):
|
||||
|
||||
@staticmethod
|
||||
@ -62,9 +62,9 @@ class BasicAICD(AlgFrontend):
|
||||
for i in range(xblocks +1):
|
||||
|
||||
|
||||
block_xy1 = (start1x + i * cell_size[0], start1y+j * cell_size[1])
|
||||
block_xy2 = (start2x + i * cell_size[0], start2y+j * cell_size[1])
|
||||
block_xy = (i * cell_size[0], j * cell_size[1])
|
||||
block_xy1 = [start1x + i * cell_size[0], start1y+j * cell_size[1]]
|
||||
block_xy2 = [start2x + i * cell_size[0], start2y+j * cell_size[1]]
|
||||
block_xy = [i * cell_size[0], j * cell_size[1]]
|
||||
|
||||
if block_xy1[1] > end1y or block_xy2[1] > end2y:
|
||||
break
|
||||
|
@ -13,10 +13,10 @@ class Front:
|
||||
self.model = model.to(self.device)
|
||||
|
||||
def __call__(self, inp1, inp2):
|
||||
inp1 = torch.from_numpy(inp1).to(self.device)
|
||||
inp1 = torch.transpose(inp1, 0, 2).transpose(1, 2).unsqueeze(0)
|
||||
inp2 = torch.from_numpy(inp2).to(self.device)
|
||||
inp2 = torch.transpose(inp2, 0, 2).transpose(1, 2).unsqueeze(0)
|
||||
inp1 = torch.from_numpy(inp1).float().to(self.device) / 255.0
|
||||
inp1 = inp1.unsqueeze(0)
|
||||
inp2 = torch.from_numpy(inp2).float().to(self.device) / 255.0
|
||||
inp2 = inp2.unsqueeze(0)
|
||||
|
||||
out = self.model(inp1, inp2)
|
||||
out = out.sigmoid()
|
||||
|
@ -48,8 +48,8 @@ class DVCADecoder(Decoder):
|
||||
in_channels = in_channels * 2
|
||||
|
||||
self.aspp = nn.Sequential(
|
||||
ASPP(in_channels, out_channels, atrous_rates),
|
||||
nn.Conv2d(out_channels, out_channels, 3, padding=1, bias=False),
|
||||
# ASPP(in_channels, out_channels, atrous_rates),
|
||||
nn.Conv2d(in_channels, out_channels, 3, padding=1, bias=False),
|
||||
nn.BatchNorm2d(out_channels),
|
||||
nn.ReLU(),
|
||||
)
|
||||
|
@ -3,11 +3,11 @@ from .DVCA import DVCA
|
||||
from .DPFCN import DPFCN
|
||||
|
||||
from . import encoders
|
||||
from . import utils
|
||||
from . import losses
|
||||
from . import datasets
|
||||
# from . import utils
|
||||
# from . import losses
|
||||
# from . import datasets
|
||||
|
||||
from .__version__ import __version__
|
||||
# from .__version__ import __version__
|
||||
|
||||
from typing import Optional
|
||||
import torch
|
||||
|
@ -4,50 +4,50 @@ import torch
|
||||
import torch.utils.model_zoo as model_zoo
|
||||
|
||||
from ._preprocessing import preprocess_input
|
||||
from .densenet import densenet_encoders
|
||||
from .dpn import dpn_encoders
|
||||
from .efficientnet import efficient_net_encoders
|
||||
from .inceptionresnetv2 import inceptionresnetv2_encoders
|
||||
from .inceptionv4 import inceptionv4_encoders
|
||||
from .mobilenet import mobilenet_encoders
|
||||
# from .densenet import densenet_encoders
|
||||
# from .dpn import dpn_encoders
|
||||
# from .efficientnet import efficient_net_encoders
|
||||
# from .inceptionresnetv2 import inceptionresnetv2_encoders
|
||||
# from .inceptionv4 import inceptionv4_encoders
|
||||
# from .mobilenet import mobilenet_encoders
|
||||
from .resnet import resnet_encoders
|
||||
from .senet import senet_encoders
|
||||
from .timm_efficientnet import timm_efficientnet_encoders
|
||||
from .timm_gernet import timm_gernet_encoders
|
||||
from .timm_mobilenetv3 import timm_mobilenetv3_encoders
|
||||
from .timm_regnet import timm_regnet_encoders
|
||||
from .timm_res2net import timm_res2net_encoders
|
||||
from .timm_resnest import timm_resnest_encoders
|
||||
from .timm_sknet import timm_sknet_encoders
|
||||
from .timm_universal import TimmUniversalEncoder
|
||||
from .vgg import vgg_encoders
|
||||
from .xception import xception_encoders
|
||||
from .swin_transformer import swin_transformer_encoders
|
||||
from .mit_encoder import mit_encoders
|
||||
# from .senet import senet_encoders
|
||||
# from .timm_efficientnet import timm_efficientnet_encoders
|
||||
# from .timm_gernet import timm_gernet_encoders
|
||||
# from .timm_mobilenetv3 import timm_mobilenetv3_encoders
|
||||
# from .timm_regnet import timm_regnet_encoders
|
||||
# from .timm_res2net import timm_res2net_encoders
|
||||
# from .timm_resnest import timm_resnest_encoders
|
||||
# from .timm_sknet import timm_sknet_encoders
|
||||
# from .timm_universal import TimmUniversalEncoder
|
||||
# from .vgg import vgg_encoders
|
||||
# from .xception import xception_encoders
|
||||
# from .swin_transformer import swin_transformer_encoders
|
||||
# from .mit_encoder import mit_encoders
|
||||
# from .hrnet import hrnet_encoders
|
||||
|
||||
DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu'
|
||||
|
||||
encoders = {}
|
||||
encoders.update(resnet_encoders)
|
||||
encoders.update(dpn_encoders)
|
||||
encoders.update(vgg_encoders)
|
||||
encoders.update(senet_encoders)
|
||||
encoders.update(densenet_encoders)
|
||||
encoders.update(inceptionresnetv2_encoders)
|
||||
encoders.update(inceptionv4_encoders)
|
||||
encoders.update(efficient_net_encoders)
|
||||
encoders.update(mobilenet_encoders)
|
||||
encoders.update(xception_encoders)
|
||||
encoders.update(timm_efficientnet_encoders)
|
||||
encoders.update(timm_resnest_encoders)
|
||||
encoders.update(timm_res2net_encoders)
|
||||
encoders.update(timm_regnet_encoders)
|
||||
encoders.update(timm_sknet_encoders)
|
||||
encoders.update(timm_mobilenetv3_encoders)
|
||||
encoders.update(timm_gernet_encoders)
|
||||
encoders.update(swin_transformer_encoders)
|
||||
encoders.update(mit_encoders)
|
||||
# encoders.update(dpn_encoders)
|
||||
# encoders.update(vgg_encoders)
|
||||
# encoders.update(senet_encoders)
|
||||
# encoders.update(densenet_encoders)
|
||||
# encoders.update(inceptionresnetv2_encoders)
|
||||
# encoders.update(inceptionv4_encoders)
|
||||
# encoders.update(efficient_net_encoders)
|
||||
# encoders.update(mobilenet_encoders)
|
||||
# encoders.update(xception_encoders)
|
||||
# encoders.update(timm_efficientnet_encoders)
|
||||
# encoders.update(timm_resnest_encoders)
|
||||
# encoders.update(timm_res2net_encoders)
|
||||
# encoders.update(timm_regnet_encoders)
|
||||
# encoders.update(timm_sknet_encoders)
|
||||
# encoders.update(timm_mobilenetv3_encoders)
|
||||
# encoders.update(timm_gernet_encoders)
|
||||
# encoders.update(swin_transformer_encoders)
|
||||
# encoders.update(mit_encoders)
|
||||
# encoders.update(hrnet_encoders)
|
||||
|
||||
|
||||
@ -55,15 +55,15 @@ def get_encoder(name, in_channels=3, depth=5, weights=None, output_stride=32, **
|
||||
|
||||
if name.startswith("tu-"):
|
||||
name = name[3:]
|
||||
encoder = TimmUniversalEncoder(
|
||||
name=name,
|
||||
in_channels=in_channels,
|
||||
depth=depth,
|
||||
output_stride=output_stride,
|
||||
pretrained=weights is not None,
|
||||
**kwargs
|
||||
)
|
||||
return encoder
|
||||
# encoder = TimmUniversalEncoder(
|
||||
# name=name,
|
||||
# in_channels=in_channels,
|
||||
# depth=depth,
|
||||
# output_stride=output_stride,
|
||||
# pretrained=weights is not None,
|
||||
# **kwargs
|
||||
# )
|
||||
# return encoder
|
||||
|
||||
try:
|
||||
Encoder = encoders[name]["encoder"]
|
||||
|
@ -8,6 +8,7 @@ from PyQt5.QtGui import QIcon
|
||||
from PyQt5.QtCore import Qt
|
||||
from osgeo import gdal, gdal_array
|
||||
import numpy as np
|
||||
import threading
|
||||
class ExportDialog(QDialog):
|
||||
|
||||
TXT='*.txt'
|
||||
@ -122,12 +123,12 @@ class ExportPlugin(BasicPlugin):
|
||||
def export_rgb_action(self):
|
||||
dialog = ExportDialog(self.mainwindow, ExportDialog.TIF)
|
||||
btn = QPushButton('选择样式文件')
|
||||
style_path = ''
|
||||
self.style_path = ''
|
||||
def select_style():
|
||||
select_file = QFileDialog.getOpenFileName(self, '选择样式文件', '*.*')
|
||||
select_file = QFileDialog.getOpenFileName(self.mainwindow, '选择样式文件', '*.*')
|
||||
if select_file[0]:
|
||||
# style_path.setText(select_file[0])
|
||||
style_path = select_file[0]
|
||||
self.style_path = select_file[0]
|
||||
btn.setText(select_file[0])
|
||||
btn.clicked.connect(select_style)
|
||||
dialog.layout().addWidget(btn)
|
||||
@ -137,21 +138,25 @@ class ExportPlugin(BasicPlugin):
|
||||
[1, 255, 0, 0]
|
||||
]
|
||||
|
||||
if style_path is '':
|
||||
if self.style_path is '':
|
||||
style = default_style
|
||||
else:
|
||||
style = np.loadtxt(style_path, comments='#', delimiter=',')
|
||||
style = np.loadtxt(self.style_path, comments='#', delimiter=',')
|
||||
style = style.tolist()
|
||||
|
||||
if dialog.exec_():
|
||||
result = dialog.result_layer.path
|
||||
result = dialog.result_layer.result_path['cmi']
|
||||
out = dialog.out_path
|
||||
self.render(style, result, out)
|
||||
t = threading.Thread(target=self.render, args=(style, result, out)) # 创建线程并执行RENDER函数
|
||||
# self.render(style, result, out)
|
||||
t.start()
|
||||
|
||||
def render(self, style:list, path, out):
|
||||
self.send_message.emit('正在导出' )
|
||||
data = gdal_array.LoadFile(path)
|
||||
if len(data.shape) == 3:
|
||||
data = data[..., 0]
|
||||
data = data[0]
|
||||
data = data / 255.0 # scale to 0-1 range for gdal_array.SaveArray()
|
||||
|
||||
def get_color(v):
|
||||
first_color = []
|
||||
@ -166,7 +171,7 @@ class ExportPlugin(BasicPlugin):
|
||||
second_value = s[0]
|
||||
second_color = s[1:]
|
||||
break
|
||||
if second_value == -1:
|
||||
if second_value == 1:
|
||||
return np.array(style[-1][1:])
|
||||
|
||||
first_dis = (v - first_value) / (second_value - first_value)
|
||||
@ -174,7 +179,7 @@ class ExportPlugin(BasicPlugin):
|
||||
first_color = np.array(first_color)
|
||||
second_color = np.array(second_color)
|
||||
color = first_color* first_dis + second_color * second_dis
|
||||
return color
|
||||
return np.floor(color)
|
||||
|
||||
|
||||
get_color = np.frompyfunc(get_color, nin=1, nout=1)
|
||||
@ -196,3 +201,5 @@ class ExportPlugin(BasicPlugin):
|
||||
out_ds.GetRasterBand(i+1).WriteArray(rgbs[..., i])
|
||||
|
||||
del out_ds
|
||||
|
||||
self.send_message.emit('导出成功,结果保存至:'+out ) # 发送消息到控制台中显示。 创建完成消息后,关闭窗口。)
|
@ -24,6 +24,7 @@ def adaptiveMedianDeNoise(count, original):
|
||||
|
||||
for i in range(c, rows - c):
|
||||
for j in range(c, cols - c):
|
||||
startWindow = 3
|
||||
k = int(startWindow / 2)
|
||||
median = np.median(original[i - k:i + k + 1, j - k:j + k + 1])
|
||||
mi = np.min(original[i - k:i + k + 1, j - k:j + k + 1])
|
||||
@ -42,7 +43,7 @@ def adaptiveMedianDeNoise(count, original):
|
||||
mi = np.min(original[i - k:i + k + 1, j - k:j + k + 1])
|
||||
ma = np.max(original[i - k:i + k + 1, j - k:j + k + 1])
|
||||
|
||||
if mi < median < ma or startWindow > count:
|
||||
if mi < median < ma or startWindow >= count:
|
||||
break
|
||||
|
||||
if mi < median < ma or startWindow > count:
|
||||
@ -68,8 +69,8 @@ class AdaptiveFilter(AlgFrontend):
|
||||
def get_widget(parent=None):
|
||||
widget = QtWidgets.QWidget(parent)
|
||||
x_size_input = QtWidgets.QLineEdit(widget)
|
||||
x_size_input.setText('3')
|
||||
x_size_input.setValidator(QtGui.QIntValidator())
|
||||
x_size_input.setText('9')
|
||||
x_size_input.setValidator(QtGui.QIntValidator(6, 21))
|
||||
x_size_input.setObjectName('xinput')
|
||||
# y_size_input = QtWidgets.QLineEdit(widget)
|
||||
# y_size_input.setValidator(QtGui.QIntValidator())
|
||||
@ -96,13 +97,13 @@ class AdaptiveFilter(AlgFrontend):
|
||||
@staticmethod
|
||||
def get_params(widget:QtWidgets.QWidget=None):
|
||||
if widget is None:
|
||||
return dict(x_size=3)
|
||||
return dict(x_size=9)
|
||||
|
||||
x_input = widget.findChild(QtWidgets.QLineEdit, 'xinput')
|
||||
# y_input = widget.findChild(QtWidgets.QLineEdit, 'yinput')
|
||||
|
||||
if x_input is None:
|
||||
return dict(x_size=3)
|
||||
return dict(x_size=9)
|
||||
|
||||
x_size = int(x_input.text())
|
||||
# y_size = int(y_input.text())
|
||||
|
@ -42,10 +42,10 @@ def adaptiveMedianDeNoise(count, original):
|
||||
mi = np.min(original[i - k:i + k + 1, j - k:j + k + 1])
|
||||
ma = np.max(original[i - k:i + k + 1, j - k:j + k + 1])
|
||||
|
||||
if mi < median < ma or startWindow > count:
|
||||
if mi < median < ma or startWindow >= count:
|
||||
break
|
||||
|
||||
if mi < median < ma or startWindow > count:
|
||||
if mi < median < ma or startWindow >= count:
|
||||
if mi < original[i, j] < ma:
|
||||
newI[i, j] = original[i, j]
|
||||
else:
|
||||
@ -98,7 +98,7 @@ class AdaptiveNPFilter(AlgFrontend):
|
||||
return dict()
|
||||
|
||||
@staticmethod
|
||||
def run_alg(pth, x_size, *args, **kargs):
|
||||
def run_alg(pth, *args, **kargs):
|
||||
# x_size = int(x_size)
|
||||
# y_size = int(y_size)
|
||||
# pth = layer.path
|
||||
|
@ -114,12 +114,17 @@ class MainPlugin(BasicPlugin):
|
||||
pth = layer.path
|
||||
if pth is None:
|
||||
return
|
||||
out_path = alg.run_alg(pth, **p, send_message=self.send_message)
|
||||
self.send_message.emit('滤波完成')
|
||||
self.send_message.emit('结果在:'+out_path)
|
||||
self.send_message.emit('滤波开始')
|
||||
try:
|
||||
out_path = alg.run_alg(pth, **p, send_message=self.send_message)
|
||||
self.send_message.emit('滤波完成')
|
||||
self.send_message.emit('结果在:'+out_path)
|
||||
|
||||
|
||||
self.alg_ok.emit(layer, out_path)
|
||||
self.alg_ok.emit(layer, out_path)
|
||||
except Exception as e:
|
||||
self.send_message.emit('滤波出现异常:'+str(e))
|
||||
|
||||
|
||||
def run(self, key):
|
||||
if key not in FILTER:
|
||||
|
@ -157,6 +157,6 @@ class FollowPlugin(BasicPlugin):
|
||||
self.current_widget = FOLLOW[self.combox.currentData()].get_widget(ActionManager().follow_box)
|
||||
|
||||
self.layout.addWidget(self.current_widget)
|
||||
self.layout.addLayout(self.btn_box)
|
||||
self.layout.addWidget(self.btn_box)
|
||||
|
||||
|
@ -12419,6 +12419,6 @@ Size = Size2i
|
||||
|
||||
|
||||
def AHT(file1, file2, outfile):
|
||||
return _AHT.AHT(file1, file2, outfile)
|
||||
return _AHT.LHBA(file1, file2, outfile)
|
||||
|
||||
|
||||
|
Binary file not shown.
BIN
plugins/unsupervised_method/scripts/_AHT_NO.pyd
Normal file
BIN
plugins/unsupervised_method/scripts/_AHT_NO.pyd
Normal file
Binary file not shown.
@ -2,7 +2,6 @@ from rscder.utils.icons import IconInstance
|
||||
from .SH import SH
|
||||
from .LHBA import LHBA
|
||||
from .OCD import OCD
|
||||
from .AHT import AHT
|
||||
from .ACD import ACD
|
||||
import numpy as np
|
||||
from datetime import datetime
|
||||
@ -686,7 +685,7 @@ class AHTAlg(AlgFrontend):
|
||||
send_message.emit('图像一提取完成')
|
||||
|
||||
# 运算
|
||||
send_message.emit('开始LHBA计算.....')
|
||||
send_message.emit('开始AHT计算.....')
|
||||
time.sleep(0.1)
|
||||
out_normal_tif = os.path.join(Project().cmi_path, '{}_{}_cmi.tif'.format(
|
||||
layer_parent.name, int(np.random.rand() * 100000)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user