サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Appleイベント
qiita.com/yoya
はじめに PNG や GIF 画像で identify を実行すると、よく分からない座標が表示される件です。JPEG では問題になりません。 なお、このエントリは実質 +repage の紹介記事となります。 % identify crop.png crop.png PNG 200x200 640x480+100+100 8-bit sRGB 183c 4344B 0.000u 0:00.000 ImageMagick はこの 640x480 を (Layer) Canvas サイズ、200x200 は (Image) Page サイズと呼びます。 (canvas は書き込み作業途中の image データを表す事もあって多義的なので注意) Canvas / Page のイメージ図 ImageMagick で crop を繰り返すと意図しない動きをしたり、GIF アニメーションの resize
はじめに サーバでなくブラウザ側で画像処理が動く WebAssembly 版 ImageMagick 〜 magick-wasm の使い方と 2023年初頭での状況報告です。 https://github.com/dlemstra/magick-wasm magick-wasm 本体にまだブラックボックス要素があるので、本体自体の解説はせず、今回は、実際に magick-wasm を使う事ができた。でも機能的に物足りなく感じた。それだけの解説エントリです。 4月20日に開発者のアナウンスにて、次リリース(恐らく 0.0.20)から wasm を js ファイルに含めないとの宣言がありました。 https://twitter.com/MagickNET/status/1648982963491618817 この記事で説明した手順では動かせなくなるかもしれません。少なくとも index.mjs
HEIF / HEIC HEIF は主に H.265/HEVC のエンコーダを使って画像をファイル化します。 ただ、HEIF 自体は H.264/AVC や JPEG 等も入れられる汎用画像コンテナフォーマット規格です。 そこで H.265/HEVC の画像が含まれる事を示すのに HEIC の呼称があり、拡張子によく使われます。ImageMagick における HEIF のコーダー名は HEIC です。 ImageMagick の HEIF 対応 2018年5月リリースの ImageMagick-7.0.7-32 (6系は 6.9.9-44) で HEIF 画像に対応しました。 実はその前に、2018年1月の ImageMagick-7.0.7-22 で HEIF 対応したのですが、色々と問題があり、その実装はなかった事にして、libheif の利用を前提にいちから作り直してます。(詳しく
画像リサイズ処理の個性についてのうんちく話です。(2019年06月04日 投稿) はじめに ビットマップ画像は表示する状況に応じてさりげなくリサイズ処理するシーンが多々あります。 そのリサイズ結果をよく眺めると、同じ画像を同じサイズ(width x height)指定でリサイズしても、アプリの種類やその時々の状況で異なる画像が生成される事に気づくでしょう。 その差異になり得る要素を紹介します。 アスペクト比と内接外接 補間フィルタ iDCT scaling コーナー合わせ パレット色維持 ガンマ補正とリニアRGB 内部ビット深度 USM(アンシャープマスク) 超解像 項目が多すぎるので詳細を書かずに、各々の観点のさわりだけ紹介します。 アスペクト比と内接外接 四角形の横と縦のサイズ比をアスペクト比と呼びます。 任意のサイズの画像を固定サイズの表示枠に当てはめるといったケースでアスペクト比が
形状から、Nearest を Point フィルタ、Bi-Linear を Triangle フィルタ、Tent フィルタ、又は 2D だと Cone フィルタと呼ぶ事もあります。ちなみに、ImageMagick のフィルタ名は、この point, triangle を採用しています。 これら以外にも沢山の補間メソッドが提唱されています。 Nearest-Neighbor 実用的な補間メソッドとして最も単純で最速です。隣からピクセルをコピーしてくるだけです。 src resample enlarge interpolate dst 実用的には、画像ビューア(ブラウザ含む)のウィンドウ枠をマウスで掴みグリグリ画像のサイズを変える時だけ Nearest-Neighbor で素早く表示し、マウスが止まってサイズが変わくなった時に改めて重たいけど画質が良い補間メソッドで表示し直す。といった使われ方
はじめに width の読み方についてツイッターで投票をお願いしたところ、181票も協力頂けたので、そのまとめです。何の影響力もない一般人アカウントでのアンケートなので、そんな事もあるかな程度に聞いて頂ければ。 ちなみに自分は日本人相手にはウィドゥス(ドゥとトゥの間位で母音抜き)で発音してます。なお、英語の発音(wídθ,wítθ/ウィス)とは掛け離れています。 結果 だいたい、選択肢に並べた通りの順位になりました。 powered by http://aikelab.net/wdgg/ それ以外だと、こんな発音をしてるというメンションを頂いてます。
世間には WebP Lossless が本当は Lossy(劣化) なのでは疑惑があるようで、本当に劣化するの?しないの?と気になり調べたメモです。 (2020年1月31日投稿) 結論はタイトルの通りで libwebp の古いバージョン含め Lossless(劣化しない)を確認しました。その際に気付いたいくつかの注意点も紹介します。 はじめに注意 WebP は 8bit 色深度のみ対応です。16bit 画像を WebP に変換すると bit 数を減らす分だけ劣化します。 Lossless エンコーダのオプション機能 Near Lossless があります。わずかに劣化を覚悟して圧縮率を高めます。後の方で改めて解説します。デフォルトoffです。 色深度 8bit, 16bit 色深度の 8bit と 16 bit の違いを図にしました。表現できる色数が段違いです。 Web 上では今でも 8b
qiita.com
世間では WebP Lossless は実は Lossy なのでは。という噂を聞くので、本当に劣化しないの?するの?と調べてみたメモです。 なお、"WebP Lossless" で Google 検索してトップに出てくるサイトでは Lossy だと断定しちゃってますけど、これはほぼ間違いです。 WebP lossless might be lossy https://wave.hatenablog.com/entry/2016/04/30/070900 真摯にも実験に使った TIFF 画像を公開してくれてるので調べられますが TIFF が 16bit 画像なんですよね。WebP は 8ビットしか扱えないので、その分の差分が出ています。ただ、今どき 16ビット駄目なの?と言われるとごめんなさいです。 仕様 https://developers.google.com/speed/webp/do
セピア調について 18世紀中頃〜19世紀初頭にかけて様々な感光剤による写真が発明され、多くのモノクロ写真が作られました。 それらは経年劣化で白が黄ばみ黒はくすみ、全体として色材のセピア(イカ墨)を思わせる茶色味がかった色になる傾向があった故に、古い写真の色調を表す代名詞としてセピア調(sepia-tone)の言葉が生まれました。 セピア調に退色した写真 セピアインクを使った図面 セピア色について セピア色という単語は、主に以下の3つの意味で使われているようです。 顔料としてのイカ墨のセピア セピアで書かれた古い絵の退色した様子 (セピア調の元ネタ) 古ぼけた写真の色調としてのセピア (本記事がターゲットとするセピア調) 顔料としてのセピアはイカ墨を乾燥させてインクとするもので歴史は古く、紀元前のまだギリシア文化の残る(Greco-Roman)古代ローマの頃には筆記用に使われていました。それ
昔々、WebP が世に知られはじめた頃、JPEG に比べファイルサイズが節約できると評判の一方、色がくすむ悪評を耳にし距離を置いた人も多いと思います。 実は、libwebp は2年前(2017/1/31)にこの色の問題をオプション扱いで改善しています。libwebp を使っている ImageMagick もようやく昨日(2019/2/18)対応して気軽に試せるようになりました。この機会に少し情報をまとめてみます。 (2019年02月19日投稿) はじめにまとめ 2017年1月リリースの libwebp-0.6.0 から use-sharp-yuv オプションが追加され、ImageMagick は大分遅れて 2019年2月に対応しました。 この use-sharp-yuv を有効にすると色劣化の問題はかなり改善されます。少し処理が重たいのと少しファイルサイズが増えるデメリットはあります。(詳
はじめに 実は、主に Mojave(10.14) で利用していた Xcode10 の頃から /usr/include は非推奨でした。 まず、Xcode10 を導入すると /usr/include が消えます。手動で復活させてもマイナー更新でいつの間にか消えたりしました。 (参考) Xcode10 の /usr/include インストール方法 (mojave) https://qiita.com/yoya/items/630c991a98e4554e6e87 Xcode10 リリースノート Xcode10 から /usr/include が無い件は、そのリリースノートに説明があります。 https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes#3035624 The comma
はじめに -auto-level や -normalize は画像が明るすぎたり暗すぎたりする際、見やすくする為によく使われます。それらが具体的に何をしてるかのメモです。以下のオプションを紹介します。 -level, -auto-level, -normalize, -contrast-stretch, -linear-stretch, -contrast コントラスト補正は特定区間の輝度レベルを輝度 Min-Max まで広げる処理です。一次式(ax+b)で線形に広げる事が多く、その事を linear contrast stretch とも呼びます。 例えば、曇り空でどんより暗い景色の画像は、輝度ヒストグラムの分布が左側(暗い方)に偏っている為、輝度レベルを広げて右側(明るい方)を有効活用するだけで見やすくなります。 画像 補正後
特によく使われそうな OpenCV, PIL(Pillow), scikit-image で処理するサンプル例を紹介します。(2019年06月19日投稿) 前提知識 カラー画像のグレースケール化は、各ピクセルの R,G,B を適切に混ぜて 1つの値にする処理です。 R,G,B をどの割合で混ぜるかは、主に BT.601 と BT.709 規格の係数が使われます。この2つは 微妙に結果が異なります。 JPEG/PNG 画像の多くは sRGB 規格に従い、その RGB 値はリニア輝度からおよそ 1.0/2.2(=0.4545..)相当のガンマ補正がかかるので、値をそのまま四則演算するとおかしな結果になりがちです。 グレースケール処理の詳細は、こちらをどうぞ。 グレースケール画像のうんちく https://qiita.com/yoya/items/96c36b069e74398796f3 Ope
JPEG を処理するオプション引数を紹介します。 -quality <Q> いわずとしれた画質オプションです。-quality 100 が最高画質で、この値を減らすと画質を犠牲にしてファイルサイズを節約できます。 こちらのポプユニティちゃん画像で実験させて頂きます。 https://www.pixiv.net/member_illust.php?mode=medium&illust_id=60366682 for q in `seq 10 10 100` ; do convert popu-unity.png -quality $q popu-unity-${q}.jpg ; done
はじめに注意 (追記) Xcode10 ではワークアラウンドとして /usr/include を回復するパッケージが提供されましたが、Catalina(10.15) の Xcode11 では回復出来ません。SDK の include path の方をコンパイラに参照させましょう。 (参考) macOS Catalina(10.15) の Xcode11 だと /usr/include が無い https://qiita.com/yoya/items/c0b26cba3c040c581643 対処方 最近(mojave あたり)の macOS でよくある /usr/include がいつの間にか消える問題への対処です。ある日突然 libxml2 が include 出来なくなって焦ったりします。 Xcode10 の場合、リリースノートに書いてあるように、 /Library/Developer
ImageMagick で GIF を扱う話です。 GIF について 古い画像フォーマットですが。GIF アニメーションとして今でもよく使われます。img タグを使ってブラウザでインライン表示出来るのが強いですね。 GIF の特徴としてアニメーションが出来る、色数が最大256色。透明色を使えますが半透明には出来ない。といった点があげられます。 減色 256色しか使えないので、色を沢山使った画像を GIF に変換すると画像の劣化が目立ちます。
はじめに このエントリでは ImageMagick の減色処理について語ります。 減色とは、画像内で使われる色の種類を減らす事です。英語では color reduction(色削減)、広い意味で色の階調を減らす事でもあるので量子化 quantization(量子化)とも呼ばれます。 画像ファイルを PNG8(パレット方式のPNG) や GIF に変換すると、暗黙的に 256色以下に減色されるので知らぬ間に減色処理を使っている人も多いでしょう。 ImageMagick の減色 ImageMagick は3つの方法で減色できます。 ビット足切り: 色のビット数を単純に減らす 決め打ちパレット: 指定した色パレットに含まれる色しか使わない 色決定アルゴリズム: 色分布を元にして似た色をまとめる 決め打ちパレットと色決定アルゴリズムの2つは、ディザ処理をかけられます。(デフォルトで on です)
ImageMagick の PNG を処理するオプションを解説するエントリです。 -quality <Q> 可逆圧縮の PNG は画質的に常に 100% なので JPEG や WebP 等と意味合いが異なりますが、quality オプションはあります。 圧縮の速さとファイルサイズのトレードオフ調整に便利です。 10の桁と1の桁を分けて使います。 ちなみにデフォルト75で、これはイケてないのですが内部的にデフォルト初期値が 0 な為に 0 や 00 も 75 扱いになります。 10 の桁 0 (または省略) Z_HUFFMAN_ONLY strategy、 zlib デフォルト圧縮レベル
前篇、中編、後編の三部作に分けます。この記事は前編です、 ビット深度自体は知ってて具体的な処理を知りたい方は、この記事を読み飛ばして中編から読んでください。 RGB ビット深度のうんちく (前編) 〜 前提知識 https://qiita.com/yoya/items/41b00127b0b1fea8c4f1 RGB ビット深度のうんちく (中編) 〜 実数型と整数型の変換 https://qiita.com/yoya/items/6ee02736f1db8bdd520e RGB ビット深度のうんちく (後編) 〜 整数型同士の変換 https://qiita.com/yoya/items/3509bbb54c0732865882 サンプルデモを作りました。任意の画像のビット深度を変更できます。お試し下さい。 http://app.awm.jp/image.js/bitdepth.html
Equalize(ヒストグラム平坦化) みんな大好き、ヒストグラム平坦化。 輝度ヒストグラムの偏りを減らす事で視認性を向上させる代表的なアルゴリズムです。 例えば、暗い方に色の輝度が偏っている画像があるとします。 % echo "P2 3 3 31 \ 31 7 6 \ 5 4 3 \ 2 1 0 " | convert - -sample 300x300 3x3.png % convert 3x3.png -equalize 3x3eq.png 以下のように輝度の階調を均すと、見た目潰れかかっている階調が改善する傾向にあります。 (ヒストグラムは横軸が輝度、縦軸は該当輝度のカウント数を最大値で正規化) 実験画像(3x3.png) ヒストグラム平坦化(3x3eq.png) 画像認識の前処理でよく使われます。(お世話になっております!) サンプルデモを作ってみたので、とりあえず画像ファイルを
ImageMagick の画像抜き出しについてのうんちくです。 画像の特定領域の抜き出しは、主に -crop と -trim が使われます。条件によって -shave も便利です。 -crop 画像を抜き出す素直なオプションは -crop です。 -crop (切り取りサイズ)+(切り取り場所の左上)のように使います。 (width)x(height)+(x)+(y) % identify -format "%wx%h" 4x4.png 200x200 % convert 4x4.png -crop 100x100+50+50 out.png
はじめに サイボウズさんの ImageMagick の利用をやめる記事について少し思う所を書きます。否定というよりアシストのつもりです。(2018年08月26日投稿) さようなら ImageMagick 自分のスタンスを3行でまとめると、 policy.xml で読み書き出来るファイル形式を絞れば、いうほど怖くはない ただ、ImageMagick に限らずサーバサイドで動かすのは手間と覚悟が要る Yahoobleed の件でコード品質が信用ならないと言われたら、ごめんなさい 「ImageMagick を外した理由」 サイボウズさんのブログでは、2017年の ImageMagick 脆弱性報告数が多いので駄目との事です。 脆弱性 ImageMagick には脆弱性が大量に存在します。 2017 年に報告された ImageMagick の脆弱性は 236 件 でした。 大量にある上にリモートコ
% convert 5000.png -quality 50 5000-q50.jpg % convert 5000.png -quality 10 5000-q10.jpg % convert 5000.png -crop 200x200+0+0 5000-crop200.png % convert 5000-q50.jpg -crop 200x200+0+0 5000-q50-crop200.png % convert 5000-q10.jpg -crop 200x200+0+0 5000-q10-crop200.png compare 5000.png 5000-q50.jpg 5000-q50-diff.png compare 5000.png 5000-q10.jpg 5000-q10-diff.png compare 5000-crop200.png 5000-q50-crop
線形を定義できる色空間は色々ありますが、本記事では RGB を例に説明します。 sRGB RGB の値が物理的な実際の色とどう対応するかの規格は色々ありまして、Web でやり取りする画像データの殆どは sRGB 規格に合わせたものです。 https://www.w3.org/Graphics/Color/sRGB.html (古いけど無料で読める) https://webstore.iec.ch/publication/6168 (売り物。ちょっとお高い) なお、sRGB 以外にも、DTP 業界では印刷物の発色に合わせて AdobeRGB 色空間が昔から使われてますし、iPhone7 発売の頃から P3 色空間もじわじわと普及してきてます。 (c)https://www.reddit.com/r/apple/comments/5287c3/lets_talk_about_that_new_
gamma:(1/2.2=0.4545...) で左上の点線カーブ、gamma:2.2 で 右下の実線カーブを描きます。0〜1 に対するべき乗なので、gamma値 が大きいほどカーブが引き下げられる事に注意して下さい。 昔のモニタの特性が下の実線カーブに近かったので、そのガンマ補正がかかるのを想定して、実際の輝度スケールに対し上の点線の補正をかける規格が RGB に適用されています。 メリット 冒頭で少し触れましたが、各家庭のテレビに入力電圧と輝度がリニアになるよう頑張る装置を載せるより、放送局側でガンマ補正した方が業界全体としてのコストが圧倒的に安いのがまず一点。 人の眼の視覚特性は低輝度の変化に敏感で高輝度で鈍感な性質があり、ガンマ補正はその点でも都合が良いです。 例えば階調が100分割だとしてガンマ補正された値は、上記グラフだと輝度50以下で 0〜73、50以上に 75〜100 の値
グレースケール変換の前提知識から具体的な変換アルゴリズムまで解説します。 カラー画像を元に白黒印刷したい場合や、最近だと機械学習の物体認識で輝度だけ使いたい等、グレースケール化の機会は意外とよくあります。 OpenCV や ImageMagick 等のグラフィックエンジンを使えばお任せ変換できますが、それが具体的にどういう処理をして、どのような選択肢があるのか、知っておいて損はないでしょう。 実際に、OpenCV や ImageMagick でグレースケール変換をしたい方は、こちらを参考にどうぞ。 Python でグレースケール(grayscale)化 ImageMagick のグレースケール変換 グレースケールとは 画像を色味のない明るさの度合いだけで表現するのがグレースケールです。 似た言葉にモノクロ画像がありますが、こちらは下のカラー以外3つを含む広い概念です。白と黒のどちらかだけで
はじめに ImageMagick は画像の拡大や縮小、いわゆるリサイズ処理を制御するオプションが幾つもあります。 -resize, -thumbnail, -scale, -sample, -resample, -geometry。 これらのオプションと、リサイズのちょっとだけ細かい話をします。 本エントリで説明しない事 ImageMagick 初心者がはじめに引っかかる、100x100 を指定したのに 100x100 の画像が出来ない問題は別記事にしました。そちらをご参照下さい。 ImageMagick の Geometry 仕様 https://qiita.com/yoya/items/704fdfbd881f166125d8 あと、少し高度なリサイズとして -distort Resize があります。時間がかかっても質の良いリサイズが欲しい場合にお勧めです。更に、特殊なリサイズとして
はじめに MSE/PSNR に比べて SSIM の方が見た目の差分をよく反映する典型的なケースを集めたドキュメントを紹介します。 Mean Squared Error:Love It or Leave It? A New Look at Signal Fidelity Measures https://ece.uwaterloo.ca/~z70wang/publications/SPM09_figures.pdf Fig.4 まで注釈します。(参照先のドキュメントでは Fig.15 まであります) 前提知識 2つの画像がどの程度似ているかの定量化、画像類似度指標として特に有名なものとして、MSE/PSNR と SSIM があります。 MSE/PSNR 2枚の画像で同じ位置同士のピクセルの輝度の差分の2乗を集計します。 単純に足すと画像サイズで値が変わるので、その平均を使うのが MSE。 更
ImageMagick の WebP 対応についてです。 (2017年12月23日投稿) WebP って? Google が比較的最近(仕様公開は2010年)に世に出してきた画像フォーマットです。VP8 動画コーデックの静止画圧縮を用います。 https://developers.google.com/speed/webp/ JPEG のように見た目が気にならない程度に画像データを劣化(元の値から変化)させてファイル容量を圧縮する方式です。JPEG よりさらにファイルサイズを削減できます。これと中身がほぼ別物になりますが、PNG のような可逆圧縮も使えます。この2つを区別する場合、前者を Lossy(劣化圧縮, 非可逆圧縮) 、後者を Lossless(無劣化圧縮、可逆圧縮) と呼ぶ事が多いです。 あと、WebP は GIF のようなアニメーションを表現できます。ただ、ImageMagic
次のページ
このページを最初にブックマークしてみませんか?
『@yoyaのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く