# 舟骨骨折區域偵測
## 資料預處理
1. 透過 scaphoid_detection 資料集擷取出骨裂區域的原圖檔

2. 將正面與側面的資料分成兩個獨立的資料集:為了將它們分開做訓練


## Scaphoid
### 將資料 scaphoid_detection 的資料集轉為 yolo format

* example: 00075616-AP0
- json:
[{"name": "Scaphoid", "bbox": ["751", "794", "873", "945"]}]
- txt:
0 0.6077844311377245 0.4940340909090909 0.09131736526946108 0.08579545454545455
* 撰寫yolo的格式規則
https://docs.ultralytics.com/zh/datasets/detect/#ultralytics-yolo-format
### 檢查
檢查每行的格式是否符合 YOLO 格式
1. 類別編號只有0
2. 是否有正確的 5 個部分:類別編號 + x, y, w, h
3. 檢查座標是否為有效的浮點數

### 分割資料集
```
output_dirs = {
'train': {'images': './data/train/images', 'labels': './data/train/labels'},
'valid': {'images': './data/valid/images', 'labels': './data/valid/labels'},
'test': {'images': './data/test/images', 'labels': './data/test/labels'},
}
```
```
split_ratio = {
'train': 0.8,
'valid': 0.2,
'test': 0.0
}
```
### 訓練
問題

### 預測


## fracture_detection
format:
* example: 00075616-AP0
- json:
[{"name": "Fracture", "bbox": [[59.04344940185547, 108.83853149414062], [97.82136535644531, 68.68283081054688], [116.95655059814453, 87.16146850585938], [78.17863464355469, 127.31716918945312]]}]
- txt:
0 0.483963 0.720785 0.801814 0.454853 0.958660 0.577228 0.640808 0.843160
* 順序:06833612-AP0
左上, 右上, 右下, 左下

* 問題:08838278 R 21M AP0

* 修正:


功能:
超出左邊界 (x < 0) → 設為 0。
超出右邊界 (x > img_width-1) → 設為 img_width-1。
超出上邊界 (y < 0) → 設為 0。
超出下邊界 (y > img_height-1) → 設為 img_height-1。
範例
clamp(-10, 0, 99) → 0(調整到左邊界)
clamp(120, 0, 99) → 99(調整到右邊界)
clamp(50, 0, 99) → 50(不調整)
* 撰寫yolo的格式規則
https://docs.ultralytics.com/zh/datasets/obb/#supported-obb-dataset-formats
```
<class_id> <x1> <y1> <x2> <y2> <x3> <y3> <x4> <y4>
```
### 分割資料集
```
output_dirs = {
'train': {'images': './data/train/images', 'labels': './data/train/labels'},
'valid': {'images': './data/valid/images', 'labels': './data/valid/labels'},
'test': {'images': './data/test/images', 'labels': './data/test/labels'},
}
```
```
split_ratio = {
'train': 0.8,
'valid': 0.2,
'test': 0.0
}
```