▶ 実 行
▶ 実行
クリア
画像のエッジ検出
by shikiishi
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* 仮エッジデータ1、2またはエッジデータは、透明度のみのデータとなります。1画素に付き、"0"か"1"。 色が滑らかに変化する画像などでは、感度が良すぎて黒くなります。絵などの輪郭を検出するのにはもってこいです!画像では、事前に色の階調(グラデーション)をおとす必要があるでしょう。 *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ V=80#←エッジの検出度合い(感度)を変化できます。Vを小さくすると、感度は上がります。 a=0, b=0, 縦列=0, 横列=0 データ=[] データ番号=[] エッジデータ=[] 仮エッジデータ1=[] 仮エッジデータ2=[] 番号1=[] 番号2=[] ●(xywhの|xywhを)色データ取得 描画中コンテキストの「getImageData」をxywhでJSメソッド実行して、それ["data"]で戻る ここまで ●画像点画描画とは 色データ=[] Iを0から縦列まで繰り返す Nを0から横列まで繰り返す 「{I}@{N}」をデータ番号へ代入 エッジデータ@データ番号を色データに代入 #色データを表示 「rgba({0},{0},{0},{色データ})」に線色設定 「rgba({0},{0},{0},{色データ})」に塗色設定 [-N*1+1000,-I*1+400]に0.5の円描画 ここまで ここまで ここまで #[0,0]へ「https://n3s.nadesi.com/image.php?f=223.png」を画像描画。 #[0,0]へ「https://n3s.nadesi.com/image.php?f=221.png」を画像描画。 #画像URN=「https://n3s.nadesi.com/image.php?f=263.png」 #画像URN=「https://n3s.nadesi.com/image.php?f=264.jpg」 #画像URN=「https://n3s.nadesi.com/image.php?f=267.jpg」 画像URN=「https://n3s.nadesi.com/image.php?f=378.png」 画像URNの[0,0,900,750]から[0,0,700,600]へ画像部分描画 #F=[0,512,5]の値指定バー作成。 描画中キャンバスをマウス押した時には、 マウスXをaに代入 マウスYをbに代入 ここまで 描画中キャンバスをマウス離した時には、 マウスX-aを横列に代入 マウスY-bを縦列に代入 Iを0から縦列まで繰り返す Nを0から横列まで繰り返す [マウスX-N,マウスY-I,1,1]の色データ取得 それを「,」で区切る Wに代入 Wの3を配列切り取り それをKに代入 K/250をpに代入 「{I*1}@{N}」をINに代入 INをcに代入 IN+0.5をdに代入 データ@c=W データ@d=p #Wを表示############################ ここまで ここまで ここまで 「①エッジ記録(何も起きませんが、 ドラッグアンドドロップ後に押してください)」のボタン作成して記録に代入 改行作成。 「②2枚プレス(ここでも何も起きません。)」のボタン作成してプレスに代入 改行作成。 「③描画(やっと検出が表示されます。)」のボタン作成して提示に代入 改行作成。 #Fのテキスト取得してVに代入 記録をクリックした時には Iを0から縦列まで繰り返す #=====================横エッジ検出 Nを0から横列まで繰り返す もし縦列=Iでなければ ぷちAデータ=[] ぷちBデータ=[] 「{I*1}@{N}」を番号1に代入 データ@番号1をぷちAデータに代入#←1回目 「{I*1+1}@{N}」を番号2に代入 データ@番号2をぷちBデータに代入#←2回目 JC=0 (ぷちAデータ@0-ぷちBデータ@0)^2をぷち1に代入 (ぷちBデータ@0-ぷちAデータ@0)^2をぷち2に代入 (ぷちAデータ@1-ぷちBデータ@1)^2をぷち3に代入 (ぷちBデータ@1-ぷちAデータ@1)^2をぷち4に代入 (ぷちAデータ@2-ぷちBデータ@2)^2をぷち5に代入 (ぷちBデータ@2-ぷちAデータ@2)^2をぷち6に代入 (ぷちAデータ@3-ぷちBデータ@3)^2をぷち7に代入 (ぷちBデータ@3-ぷちAデータ@3)^2をぷち8に代入 もし(ぷち1>V)または(ぷち2>V)または(ぷち3>V)または(ぷち4>V)または(ぷち5>V)または(ぷち6>V)または(ぷち7>V)または(ぷち8>V)でなければ JCに0を代入 「{I}@{N}」をデータ番号へ代入 仮エッジデータ1@データ番号=JC 違えば JCに1を代入 「{I}@{N}」をデータ番号へ代入 仮エッジデータ1@データ番号=JC ここまで ここまで ここまで ここまで Iを0から縦列まで繰り返す #====================縦エッジ検出 Nを0から横列まで繰り返す もし横列=Nでなければ ぷちAデータ=[] ぷちBデータ=[] 「{I*1}@{N}」を番号1に代入 データ@番号1をぷちAデータに代入#←1回目 「{I*1}@{N+1}」を番号2に代入 データ@番号2をぷちBデータに代入#←2回目 JC=0 (ぷちAデータ@0-ぷちBデータ@0)^2をぷち1に代入 (ぷちBデータ@0-ぷちAデータ@0)^2をぷち2に代入 (ぷちAデータ@1-ぷちBデータ@1)^2をぷち3に代入 (ぷちBデータ@1-ぷちAデータ@1)^2をぷち4に代入 (ぷちAデータ@2-ぷちBデータ@2)^2をぷち5に代入 (ぷちBデータ@2-ぷちAデータ@2)^2をぷち6に代入 (ぷちAデータ@3-ぷちBデータ@3)^2をぷち7に代入 (ぷちBデータ@3-ぷちAデータ@3)^2をぷち8に代入 もし(ぷち1>V)または(ぷち2>V)または(ぷち3>V)または(ぷち4>V)または(ぷち5>V)または(ぷち6>V)または(ぷち7>V)または(ぷち8>V)でなければ JCに0を代入 「{I}@{N}」をデータ番号へ代入 仮エッジデータ2@データ番号=JC 違えば JCに1を代入 「{I}@{N}」をデータ番号へ代入 仮エッジデータ2@データ番号=JC ここまで ここまで ここまで ここまで ここまで プレスをクリックした時には#←「2枚プレス」ボタンを押すと、2枚の 縦,横エッジを重ね合わせます。 Iを0から縦列まで繰り返す Nを0から横列まで繰り返す 「{I}@{N}」をデータ番号へ代入 仮エッジデータ1@データ番号をぷちAデータに代入 仮エッジデータ2@データ番号をぷちBデータに代入 もし(ぷちAデータ=1)または(ぷちBデータ=1)ならば エッジデータ@データ番号=1 違えば エッジデータ@データ番号=0 ここまで ここまで ここまで ここまで 提示をクリックした時には 全描画クリア 画像点画描画 ここまで #おわり
b9579435611a4a68cf50c672a6e4310e
2638