covid-chestxray-enhancement-eval
Exploring the Effect of Image Enhancement Techniques on COVID-19 Detection using Chest X-rays Images — Rahman et al. (2020) (arXiv:2012.02238, 2020)
What this evaluates
Evaluates the impact of five image enhancement techniques (histogram equalization, CLAHE, complement, gamma correction, BCET) on six CNN architectures for three-class classification (COVID-19, lung opacity, normal) using chest X-ray images. It also assesses whether lung segmentation improves classification accuracy and model interpretability.
Datasets
- COVQU-20 — total 18479; splits: test (-1); repo https://github.com/IEEE8023/covid-chestxray-dataset
Metrics
Accuracy(primary) — range: percent- Percentage of correctly classified images out of the total number of images in the evaluation set.
Weighted F1-Score— range: percent- Harmonic mean of precision and recall, weighted by the number of true instances for each class.
Weighted Precision— range: percent- Ratio of true positive predictions to all positive predictions, averaged across classes weighted by support.
Weighted Recall— range: percent- Ratio of true positive predictions to all actual positive instances, averaged across classes weighted by support.
Input / output format
Input: Chest X-ray images (plain or lung-segmented), optionally pre-processed with one of five enhancement techniques (histogram equalization, CLAHE, image complement, gamma correction, BCET).
Output: One of three class labels: 'COVID-19', 'lung opacity', or 'normal'.
Scoring recipe
def compute_metrics(preds, golds):
classes = ['COVID-19', 'lung opacity', 'normal']
accuracy = sum(p == g for p, g in zip(preds, golds)) / len(golds)
prec, rec, f1 = [], [], []
for c in classes:
tp = sum(p == c and g == c for p, g in zip(preds, golds))
fp = sum(p == c and g != c for p, g in zip(preds, golds))
fn = sum(p != c and g == c for p, g in zip(preds, golds))
p = tp / (tp + fp) if (tp + fp) > 0 else 0
r = tp / (tp + fn) if (tp + fn) > 0 else 0
f = 2 * p * r / (p + r) if (p + r) > 0 else 0
prec.append(p); rec.append(r); f1.append(f)
weighted_f1 = sum(f * support for f, support in zip(f1, [8851, 6012, 3416])) / 18279
return accuracy * 100, weighted_f1 * 100
Common pitfalls
- The segmentation model's performance on the classification dataset is only qualitatively evaluated because ground truth masks are unavailable for that specific database.
- Deeper architectures (e.g., ResNet101) do not consistently outperform domain-specific models (e.g., CheXNet), highlighting the importance of task-specific pretraining and hyperparameter tuning.
- Image segmentation does not always improve classification accuracy but significantly improves model interpretability by focusing decisions on the lung region of interest.
Evidence (verbatim from paper)
Finally, it was seen that the combination of gamma enhancement and ChexNet was the best performing networking for the COVID-19 classification with about 96.29% and 96.28% , accuracy and F1-Score respectively.
Citation
@misc{rahman2020exploring,
title={Exploring the Effect of Image Enhancement Techniques on COVID-19 Detection using Chest X-rays Images},
author={Rahman et al. (2020)},
year={2020},
note={arXiv:2012.02238}
}
- arXiv: 2012.02238