更新した日はアクセス数が延びてはいるんですが、それって全部自分のアクセスじゃないかと不安な画像処理ブログ第6弾です。
アクセス数の違いがライブラリの優秀さの決定的差ではないことを教えてあげるんだから!
と悔しさがにじみ出たんでエッジ検出やります。
こんな画像が
![東京タワー](https://stat.ameba.jp/user_images/20121031/21/sakiyamak/21/a2/j/t02200293_0480064012264098679.jpg?caw=800)
こんなふうにエッジ検出されます
![sobel](https://stat.ameba.jp/user_images/20121031/21/sakiyamak/7b/61/j/t02200293_0480064012264098680.jpg?caw=800)
もう能書きはいいからコードは以下。
短すぎるからhtml部とscript部なんて分けてないんだよ!
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<script type="text/javascript" charset="UTF-8" src = "javascript/opencv.js"></script>
<script type="text/javascript" charset="UTF-8">
var DMY_IMG = "javascript/dmy.jpg";
var iplImage = new IplImage();
//ソーベルフィルタ
function Sobel(imgId, iplImage){
//新しい画像領域を確保
var newIplImage = cvCreateImage(iplImage.width, iplImage.height);
//白黒濃淡の表色系に変換
cvCvtColor(iplImage, newIplImage, CV_CODE.RGB2GRAY);
//ソーベルフィルタ
cvSobel(newIplImage, newIplImage, 0, 1);
//絶対値化
cvConvertScaleAbs(newIplImage, newIplImage);
//imgIdに画像を転送
cvShowImage(imgId, newIplImage);
}
//ケニーフィルタ
function Canny(imgId, iplImage){
//新しい画像領域を確保
var cannyImage = cvCreateImage(iplImage.width, iplImage.height);
//白黒濃淡の表色系に変換
cvCvtColor(iplImage, cannyImage, CV_CODE.RGB2GRAY);
//ケニーフィルタ
cvCanny(cannyImage, cannyImage, 50, 200);
//imgIdに画像を転送
cvShowImage(imgId, cannyImage);
}
</script>
</head>
<body>
<input type="file" id="file1" onClick="cvLoadImagePre(event, 'file1')" onchange="cvLoadImage(event, 'dispImage', iplImage, 800)">
<br />
<input type="button" value="sobel" onClick="Sobel('dispImage', iplImage)">
<input type="button" value="canny" onClick="Canny('dispImage', iplImage)">
<hr />
<img id="dispImage" src="">
</body>
</html>
最初にご覧いただいたのはソーベルの方でケニーの方のエッジ検出はこんな感じです。
![canny](https://stat.ameba.jp/user_images/20121031/21/sakiyamak/5e/8b/j/t02200293_0480064012264103436.jpg?caw=800)
エッジ検出はinstagram風の写真加工にも活かせる部分はあるかと思いますが、どちらかとえば生産ラインの品質管理システムで使われることが多いと思います。
キズがあったら自動検出とか。
今回はこんだけ!
ふぅ、これで個人的な意地は通せた。