|
1 | 1 | using openDicom.Encoding;
|
2 | 2 | using System.Collections.Generic;
|
| 3 | +using System.Globalization; |
3 | 4 | using System.Linq;
|
4 | 5 | using System.Threading;
|
5 | 6 | using System.Threading.Tasks;
|
@@ -160,29 +161,28 @@ public void AddSegmentation(VolumeDataset dataset)
|
160 | 161 | overlayType = OverlayType.Segmentation;
|
161 | 162 |
|
162 | 163 | int lastSegmentationId = segmentationLabels.Count > 0 ? segmentationLabels.Max(l => l.id) : 0;
|
163 |
| - int maxSegmentationId = -1; |
| 164 | + int minSegmentationId = int.MaxValue; |
| 165 | + int maxSegmentationId = int.MinValue; |
164 | 166 |
|
165 | 167 | if (segmentationLabels.Count == 0)
|
166 | 168 | {
|
167 | 169 | secondaryDataset = dataset;
|
168 |
| - maxSegmentationId = Mathf.RoundToInt(dataset.GetMaxDataValue()); |
169 | 170 | }
|
170 |
| - else |
| 171 | + for (int i = 0; i < dataset.data.Length; i++) |
171 | 172 | {
|
172 |
| - for (int i = 0; i < dataset.data.Length; i++) |
| 173 | + int value = Mathf.RoundToInt(dataset.data[i]); |
| 174 | + if (value > 0) |
173 | 175 | {
|
174 |
| - int value = Mathf.RoundToInt(dataset.data[i]); |
175 |
| - if (value > 0) |
176 |
| - { |
177 |
| - maxSegmentationId = Mathf.Max(maxSegmentationId, value); |
178 |
| - secondaryDataset.data[i] = maxSegmentationId + value; |
179 |
| - } |
| 176 | + minSegmentationId = Mathf.Min(minSegmentationId, value); |
| 177 | + maxSegmentationId = Mathf.Max(maxSegmentationId, value); |
| 178 | + secondaryDataset.data[i] = lastSegmentationId + value; |
180 | 179 | }
|
181 |
| - secondaryDataset.RecalculateBounds(); |
182 |
| - secondaryDataset.RecreateDataTexture(); |
183 |
| - secondaryDataset.GetDataTexture().filterMode = FilterMode.Point; |
184 | 180 | }
|
185 |
| - for (int i = 1; i <= maxSegmentationId; i++) |
| 181 | + secondaryDataset.RecalculateBounds(); |
| 182 | + secondaryDataset.RecreateDataTexture(); |
| 183 | + secondaryDataset.GetDataTexture().filterMode = FilterMode.Point; |
| 184 | + |
| 185 | + for (int i = minSegmentationId; i <= maxSegmentationId; i++) |
186 | 186 | {
|
187 | 187 | int segmentationId = i + lastSegmentationId;
|
188 | 188 | SegmentationLabel segmentationLabel = new SegmentationLabel();
|
|
0 commit comments