(ぼかし処理)・画像にノイズを加える乱数を使って指定の画像にノイズ画像を加える方法を解説します。ノイズが発生する割合をパーセントで指定することで、ノイズの密度を調整することができるようにします。20.01つ目の引数で元のJPEGファイル名、2つ目の引数でノイズを加えたJPEG画像ファイル名、3つ目の引数でノイズピクセルの発生率をパーセントで指定します。・元の画像(sampleimage001_400x320.jpg)・ノイズを加えた画像(noise2.jpg)ノイズを加えた画像(20%)画像に中にある白い点がノイズです。ここからは、このJavaソースコードを上から順番に解説していきます。Javaのクラスライブラリの中から「java.awt.image.BufferedImage」と「java.io.File」と「javax.imageio.ImageIO」と「java.io.IOException」と「java.awt.image.RasterFormatException」というパッケージにあるクラスを、このプログラム内で使うために記述します。この記述により、ImageIOクラスとBufferedImageクラスとRasterFormatExceptionが利用できるようになります。{クラス名を、Noise2としています。{このmainメソッドからプログラムを実行します。null;このプログラムで使う変数を宣言しています。}3つ以上の引数が与えられたかをチェックし、4つ未満の場合に、使い方のメッセージを表示し、returnによってmainメソッドを抜けています。}与えられた引数をそれぞれ、入力JPEGファイル名、出力JPEGファイル名、ノイズの割合を格納する変数に代入しています。}BufferedImageクラスのコンストラクタで、新しいBufferedImageを構築しています。色成分によるイメージを表します。これを指定することで24ビットの画像を作成できます。}の波括弧で囲まれた処理を実行するということです。この場合は、JPEGファイル名が不正であったり、存在していなかったり、フォーマットが違っているなどが原因で処理が失敗する可能性があります。処理が失敗するとreturnによってmainメソッドを抜けるようにしています。}BufferedImageクラスのgetTypeメソッドで画像のイメージ型を取得しています。getType()■イメージ型を返します。イメージ型を返します。rate;ノイズ画像作成で使う変数を宣言しています。img.getHeight();画像の幅を変数width、高さを変数heightに代入しています。{画像の中の全てのピクセルの座標を参照するループをつくっています。具体的には、変数yを0~height-1、変数xを0~width-1に変化させています。100.0;乱数からパーセントを計算した値(0.0~99.999..)を変数rateに代入しています。Math.randomメソッドは、0.0~0.99999..の乱数を発生するので、その値に100.0を掛けることでパーセントを計算しています。Math.random()■乱数を返します。{引数で指定したノイズの割合(noiserate)より、乱数から作成した値(rate)が小さければノイズと判定しています。この処理で、指定したノイズ割合を大きくすれば、ノイズの発生率が高くなるようにしています。b;RGB合成して、色(変数color)を作成しています。);色(変数color)を(x,y)に代入しています。}BufferedImageクラスのimgのメモリ内のデータを、出力JPEG名の変数(outname)に格納されているファイル名で保存します。この場合は、JPEGファイル名が不正であったり、保存先のHDDなどが存在していなかったり、空き容量が少ないなどが原因で処理が失敗する可能性があります。IOException■BufferedImageを画像ファイルに保存します。保存に成功するとtrue、失敗するとfalseを返します。);全ての処理が正常終了すると、ここまで処理が実行されます。