{"cells":[{"metadata":{},"cell_type":"markdown","source":"This notebook shows a simple way to classify all JPG images based on their quality (75, 90, 95). <br />\nThis notebook used imagemagick app to determine the images quality. <br />\nIn summary, among 75000 training images, we found <br />\n23,415 images for 75q, <br />\n23,451 images for 90q, <br />\n23,442 images for 95q, and <br />\n4,693 images for unidentified quality. <br />\n<br />\nI hope this notebook might be useful for anyone who want to take the image quality in account.\n"},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"!apt -y install imagemagick","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"base_path = '/kaggle/input/alaska2-image-steganalysis/'","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import os\nimport numpy as np\nimport subprocess\nfrom numpy import savetxt\n\nc75 = [] \nc90 = [] \nc95 = [] \ncn = [] \n\nfor id in range(75001): \n    id = '{:05d}'.format(id) + '.jpg'\n    cover_path = os.path.join(base_path, 'Cover', id) \n    output = os.popen(\"identify -format '%Q' \"+cover_path).read()\n    #print(output)\n\n    if output != '':\n        output = int(output)\n\n    if output == 75:\n        #c75 = c75+1\n        c75.append(id)\n    elif output == 90:\n        #c90 = c90+1\n        c90.append(id)\n    elif output == 95:\n        #c95 = c95+1\n        c95.append(id)\n    else:\n        #cn = cn+1\n        cn.append(id)\n\nprint(\"Total 75 q = \",len(c75))\nprint(\"Total 90 q = \",len(c90))\nprint(\"Total 95 q = \",len(c95))\nprint(\"Total cannot detect = \",len(cn))\n\nsavetxt('c75.csv', c75, fmt='%s') \nsavetxt('c90.csv', c90, fmt='%s') \nsavetxt('c95.csv', c95, fmt='%s') \nsavetxt('cn.csv', cn, fmt='%s')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt; plt.rcdefaults()\nimport matplotlib.pyplot as plt\n\nq_data = ('Q95', 'Q90', 'Q75', 'Not detect Q')\ny_pos = np.arange(len(objects))\ntotal = [len(c95),len(c90),len(c75),len(cn)]\n\nplt.bar(y_pos, total, align='center', alpha=0.5)\nplt.xticks(y_pos, q_data)\nplt.ylabel('Total images')\nplt.title('No. of JPG quality')\n\nfor i, v in enumerate(total):\n    plt.text(i, v + 200, str(v))\n\nplt.show()\n","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}