私は最後の1年間ですEngg.iは私の最終年度のプロジェクトのために少し修正してスケッチ生成アルゴリズムを実装したいと思います。これは私がアクセスして、 Matlabで提示されているように数字の点ではRGBのようになります)。アルゴリズムはmatlabでうまく動作しますが、プロジェクトの要件のために、私はJavaでそれを行うつもりです。インターネットやさまざまなJavaフォーラムを通って行くことは私を助けませんでした。
Matlabコードでは、次のスニペットを使用してピクセルにアクセスできます。
120,234のピクセル強度値は、Aが考慮中のイメージの名前である場合、 "A(120,234)"となります。
同様に私はJavaでイメージのピクセル強度値にアクセスし、アルゴリズムでそれらを変更したいと思います。
誰かが私を助けてくれたらとても嬉しいです。事前に
おかげ修正されたスケッチ生成をJavaで実装する
答えて
あなたはMATLABへのアクセス権を持っているので、私は自分のイメージのものが、私はそれがあると思うし、彼らは強度にRGBを変換する方法を見ていると、MATLABで書かれていると仮定すると、そのコードを掘り下げることをお勧めしたいです。彼らはHSL(Hue-Saturation-Luminance)を使用していますか?または他の色変換。それを知っているならば、たとえばRGBをHSLに変換するためのJavaコードを見つけることができます。
編集:
このコードのコメントによれば、このコードはうまくいくと思います。私はすべての操作をコピーして書き直さなかったので、それは完全ではありませんが、それはあなたに考えを与えるはずです。
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Convolution {
public static void main(String[] args) throws Exception {
File inputFile = new File("apple.jpg");
BufferedImage bufferedImage = ImageIO.read(inputFile);
int w = bufferedImage.getWidth();
int h = bufferedImage.getHeight();
System.out.println("w=" + w + ", h=" + h);
// Get Pixels
int[] image = new int[w * h];
bufferedImage.getRGB(0, 0, w, h, image, 0, w);
// Convert to simple grayscale
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
int idx = (y * w) + x;
int p = image[idx];
int r = p & 0x00FF0000 >> 16;
int g = p & 0x0000FF >> 8;
int b = p & 0x000000FF;
image[idx] = (int) ((r + g + b)/3.0);
}
}
int convolutionSize = 3;
int[][] convolution = { { 0, -1, 0 }, { -1, 4, -1 }, { 0, -1, 0 } };
int[] newImage = new int[w * h];
// Apply the convolution to the whole image, note that we start at
// 1 instead 0 zero to avoid out-of-bounds access
for (int y = 1; y + 1 < h; y++) {
for (int x = 1; x + 1 < w; x++) {
int idx = (y * w) + x;
// Apply the convolution
for (int cy = 0; cy < convolutionSize; cy++) {
for (int cx = 0; cx < convolutionSize; cx++) {
int cIdx = (((y - 1) + cy) * w)
+ ((x - 1) + cx);
newImage[idx] += convolution[cy][cx] * image[cIdx];
}
}
// pixel value rounding
if (newImage[idx] < 0) {
newImage[idx] = -newImage[idx];
} else {
newImage[idx] = 0;
}
if (newImage[idx] > 0) {
newImage[idx] = 120 - newImage[idx];
} else {
newImage[idx] = 255;
}
}
}
// Convert to "proper" grayscale
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
int idx = (y * w) + x;
int p = newImage[idx];
newImage[idx] = 0xFF000000 | (p << 16) | (p << 8) | p;
}
}
// Set the image to have the new values;
bufferedImage.setRGB(0, 0, w, h, newImage, 0, w);
// Write the new image as a PNG to avoid lossey compression,
// and its eaiser than trying to display an image in Java.
ImageIO.write(bufferedImage, "png", new File("new_apple.png"));
}
}
編集:
は期待通りに動作するようにコードを修正しました。その高速ではないが、それは動作します。
前に:
後:
あなたが使用したいことは、あなたが/書き込み画素を読み取るために使用することができますwritableRaster得ることができ、そこからbufferedImage、であるように私には思えます値。
また、bufferedImageとやりとりする方法については、this tutorialも参照してください。
私はbufferedImagesとRaster classes.butを使用しようとしましたが、彼らは十分な有用性を持っていませんでした。 – jack1689
- 1. Springで実装されたRESTfulなサービスのJavaクライアントプロキシを生成するには?
- 2. PyQt(QtCreatorで生成されたファイル)でスプリッタを実装する
- 3. Androidは修正されたJavaマシンを実行しますか?
- 4. jaggery-jsで生成された文字エンコーディングを修正するには?
- 5. 修正されたスーパークラスをJavaでロードするには?
- 6. Yii - CListViewによって生成されたhtmlの修正
- 7. Git-Flowは、完成した/修正された修正プログラムブランチを元に戻す
- 8. 生成されたEntity FrameworkクラスにINotifyPropertyChangedを実装します
- 9. 私のPVectorがこのスケッチで修正されたままであるべきである理由
- 10. symfony:自動生成された静的ファイルパスを修正するには?
- 11. JavaアプリケーションでOrbeon-フォームBuilderで生成されたフォームを実行
- 12. AOTなしで生成されたプロジェクトでAOTを実装する
- 13. AJAXを実装するためのコードを修正してください
- 14. 優先キューのヒープ実装を正しく修正する
- 15. 修正する方法:domPDFによって生成された出力結果?
- 16. PHP MD5実装で正しい結果が生成されない
- 17. TrustManagerの安全でない実装を修正するには?
- 18. tolowercase実装プロローグでエラーを修正するには?
- 19. Xcodeでプロトコルの欠落したメソッドの自動修正実装?
- 20. Rails CSSとJavaScriptで修正された&CSSEditが修正されましたか?
- 21. 共変(covariant)ジェネリックで修飾された形質を実装する
- 22. キュウバーフィーチャーファイルをJavaで実行する前に修正する
- 23. 動的に生成されたフォームフィールドのフォーム検証を実装する方法
- 24. extjsグリッドで修正された水平スクロールバーを修正するには?
- 25. Javaで実装されたHashMapの複雑さをput/get jdk
- 26. jvmで生成されたfrege javaコードを実行するには?
- 27. シャットダウンで正常にJava子プロセスが生成される
- 28. Java Reflection:実装クラスを作成する
- 29. Javaでネストされたクラスのメモリリークを見つけて修正する方法
- 30. 手動で修正された逆アセンブルされたアセンブリのアドレスを自動修正するツール
一部のコード:http://www.f4.fhtw-berlin.de/~barthel/ImageJ/ColorInspector//HTMLHelp/farbraumJava.htm –
suggestion.iに感謝しましたが、私は言いましたが、強度値を取得する方法のMatlabsの適切な言及。 Javaでは、私が得る値は6から8桁の数字であり、それも負のnumber.iではJavaのさまざまなクラスをRasterクラスやColorクラスのように試しましたが、十分に役に立たなかった。 – jack1689
これはカラー画像ですか、グレースケール画像ですか?どのフォーマットがJPEG、GIF、...ですか? matlabでイメージをロードするために使用しているコードを与えることができますか?私は 'A = imread(filename)'を実行していて、 'A'という行列を直接操作していると仮定します。これは正しいです? – troutinator