# HG changeset patch # User Sebastien Jodogne # Date 1606813706 -3600 # Node ID 391c798e4daeac56b486149e49a132d9a6575958 # Parent 6aadc7cbb8eac0ac172263ca5f94efe38f6b01dc fix for KNIX sample dataset diff -r 6aadc7cbb8ea -r 391c798e4dae Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp --- a/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Tue Dec 01 08:58:53 2020 +0100 +++ b/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Tue Dec 01 10:08:26 2020 +0100 @@ -1918,6 +1918,7 @@ "/frames/" + boost::lexical_cast(frameNumber + 1) + "/rendered"); std::map headers, arguments; + // arguments["quality"] = "10"; // Low-level quality for test purpose arguments["window"] = ( boost::lexical_cast(windowingCenter_) + "," + boost::lexical_cast(windowingWidth_) + ",linear"); diff -r 6aadc7cbb8ea -r 391c798e4dae OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp --- a/OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp Tue Dec 01 08:58:53 2020 +0100 +++ b/OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp Tue Dec 01 10:08:26 2020 +0100 @@ -33,24 +33,32 @@ { void CoordinateSystem3D::CheckAndComputeNormal() { - // DICOM expects normal vectors to define the axes: "The row and - // column direction cosine vectors shall be normal, i.e., the dot - // product of each direction cosine vector with itself shall be - // unity." - // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html + /** + * DICOM expects normal vectors to define the axes: "The row and + * column direction cosine vectors shall be normal, i.e., the dot + * product of each direction cosine vector with itself shall be + * unity." + * http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html + **/ if (!LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(axisX_), 1.0) || !LinearAlgebra::IsNear(boost::numeric::ublas::norm_2(axisY_), 1.0)) { LOG(WARNING) << "Invalid 3D geometry: Axes are not normal vectors"; SetupCanonical(); } - - // The vectors within "Image Orientation Patient" must be - // orthogonal, according to the DICOM specification: "The row and - // column direction cosine vectors shall be orthogonal, i.e., - // their dot product shall be zero." - // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html - else if (!LinearAlgebra::IsCloseToZero(boost::numeric::ublas::inner_prod(axisX_, axisY_))) + + /** + * The vectors within "Image Orientation Patient" must be + * orthogonal, according to the DICOM specification: "The row and + * column direction cosine vectors shall be orthogonal, i.e., + * their dot product shall be zero." + * http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html + * + * The "0.00001" threshold is needed for KNIX (on this sample + * image, the inner product equals "0.000003", which is rejected + * by "LinearAlgebra::IsCloseToZero()"). + **/ + else if (!LinearAlgebra::IsNear(0, boost::numeric::ublas::inner_prod(axisX_, axisY_), 0.00001)) { LOG(WARNING) << "Invalid 3D geometry: Image orientation patient is not orthogonal"; SetupCanonical(); diff -r 6aadc7cbb8ea -r 391c798e4dae TODO --- a/TODO Tue Dec 01 08:58:53 2020 +0100 +++ b/TODO Tue Dec 01 10:08:26 2020 +0100 @@ -26,11 +26,17 @@ (using pure DICOMweb). This could possible be done using the DICOMweb Bulk Data URI, and/or a dedicated JavaScript video player. +* Debian packaging, which requires source-level build dependencies: + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=975069#22 + * "Start the Viewer with a specific Dicom file and display the specific images. For example I start the Viewer with dicomFile and open slide1, slide4, slide8, slide12 ?" https://groups.google.com/g/orthanc-users/c/6KSe0WEEfco/m/nOIl57EzAAAJ +* Configuration option related to the "DicomSource" class in order to + systematically request server-side transcoding. + ==================================