https://github.com/iceclear/il-niqe
Python implement for IL-NIQE (A Feature-Enriched Completely Blind Image Quality Evaluator).
https://github.com/iceclear/il-niqe
il-niqe nr-iqa
Last synced: about 1 year ago
JSON representation
Python implement for IL-NIQE (A Feature-Enriched Completely Blind Image Quality Evaluator).
- Host: GitHub
- URL: https://github.com/iceclear/il-niqe
- Owner: IceClear
- License: apache-2.0
- Created: 2019-07-11T12:02:06.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-01-13T03:02:12.000Z (over 4 years ago)
- Last Synced: 2023-10-20T20:18:39.249Z (over 2 years ago)
- Topics: il-niqe, nr-iqa
- Language: Python
- Homepage:
- Size: 9.96 MB
- Stars: 21
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IL-NIQE (A Feature-Enriched Completely Blind Image Quality Evaluator)
This is the python implement for [IL-NIQE](http://www4.comp.polyu.edu.hk/~cslzhang/paper/IL-NIQE.pdf). The official Matlab version can be downloaded [here](http://live.ece.utexas.edu/research/Quality/blind.htm) or found from the [release](https://github.com/IceClear/IL-NIQE/releases/tag/v1.0.0).
## Get Started
* Test:
```bash
python IL-NIQE.py
```
* Train
```bash
python train.py
```
You can also train your own model via training.m in the Matlab version. But the results can be different due to the imresize function.
## Results
|Image|IL-NIQE (using official .mat) (Matlab/Python)|IL-NIQE (using .mat trained in python) (Python)|IL-NIQE (w/o imresize) (Matlab/Python)|Time(sec) (Matlab/Python)|
|:-|:-|:-|:-|:-|
|pepper_0.png|29.1422 / 28.8966|30.3513|38.7078 / 38.9319|9.9567 / 103.4350|
|pepper_1.png|36.9637 / 37.4120|37.6577|36.6869 / 37.0163|9.7487 / 90.1218|
|pepper_2.png|29.5075 / 28.9969|28.4353|28.7137 / 28.6329|10.3733 / 103.6504|
|pepper_3.png|78.0557 / 83.3886|74.5166|92.3750 / 92.9693|10.5093 / 97.8555|
|pepper_4.png|46.8697 / 51.7191|46.9279|46.4926 / 46.8856|9.7452 / 103.4113|
For Matlab, it uses parpool for multiprocessing and is much faster than python. This implement supports multiprocessing via ray.
* Difference: The main reasons of the difference may be due to the precision of float computing and different results of similar functions of Matlab and Python, i.e., imresize. (The large differences for 'pepper_3.png' and 'pepper_4.png' are mainly due to resize.)
After comparision, I have found some lines which generate different results, it can be more accurate if you can provide a better function to replace the current one:
- [imresize function:](https://github.com/IceClear/IL-NIQE/blob/master/IL-NIQE.py#L249) The difference between the imresize function between python and Matlab seems affect the results the most. Maybe the solution is to rewrite the function in python.
- [var:](https://github.com/IceClear/IL-NIQE/blob/master/IL-NIQE.py#L111) The varience of numpy is sometimes different from the var() function in Matlab. The difference is smaller than 1. Reasons are unknoen yet.
Any suggestions for improvement are welcomed.